Jena-ს JDK-ზე დაფუძნებული HTTP დასტისთვის, რომელიც Jena 4.3-ში შემოვიდა, დააკონფიგურირეთ transport, რომელიც მოთხოვნის ამშენებელს გადაეცემა. SPARQL საბოლოო წერტილის პაროლი და პროქსის პაროლი შეიძლება სხვადასხვა მანქანამ მოითხოვოს.

import java.net.InetSocketAddress;
import java.net.ProxySelector;
import java.net.http.HttpClient;
import org.apache.jena.sparql.exec.http.QueryExecutionHTTP;

var http = HttpClient.newBuilder()
    .proxy(ProxySelector.of(
        new InetSocketAddress("proxy.example", 8080)))
    .authenticator(proxyAuthenticator)
    .build();

var execution = QueryExecutionHTTP.service(endpointUrl)
    .httpClient(http)
    .query("ASK { ?s ?p ?o }")
    .build();

ეს ფრაგმენტი მოთხოვნის შესრულებას ქმნის. endpointUrl არის SPARQL სერვისის რეალური URL; proxyAuthenticator არის აპლიკაციის მიერ მოწოდებული java.net.Authenticator. გაუშვით და დახურეთ მოთხოვნის შესრულება აპლიკაციის ჩვეულებრივი მოთხოვნის სასიცოცხლო ციკლით.

ამ ავთენტიფიკატორის getPasswordAuthentication მეთოდში დააბრუნეთ პროქსის PasswordAuthentication მხოლოდ მაშინ, როცა getRequestorType() == RequestorType.PROXY და როცა მომთხოვნი ჰოსტი და პორტი ემთხვევა კონფიგურირებულ შუამავალს. დაუკავშირებელი გამოწვევებისთვის დააბრუნეთ null. ამ ობიექტის კლიენტზე მიმაგრება არჩევანს ამ კლიენტისთვის ლოკალურად ტოვებს.

წაიკითხეთ, რას ითხოვს პროქსი

407 პასუხი პროქსის ავთენტიფიკაციის გამოწვევას ნიშნავს. მისი Proxy-Authenticate სათაური გეტყვით შემოთავაზებულ სქემებს; მხოლოდ სტატუსი არ განასხვავებს Basic-ს NTLM-ისგან ან სხვა სქემისგან.

შეადარეთ ეს შეთავაზება გაშვებული JDK კლიენტის შესაძლებლობებსა და ავთენტიფიკაციის პოლიტიკას. მომხმარებლის სახელისა და პაროლის მიწოდება არ ამატებს მხარდაუჭერელ სქემას. HTTPS მიმართულებებისთვის ასევე შეამოწმეთ JDK-ის jdk.http.auth.tunneling.disabledSchemes პოლიტიკა; ჩვეულებრივ HTTP პროქსის ცალკე disabledSchemes პარამეტრი აქვს. JDK-ის Basic ავთენტიფიკაციის ნაგულისხმევი მნიშვნელობები CONNECT-ისთვის ერთ-ერთი ასეთი პოლიტიკის შემოწმებაა.

Apache HttpClient-ისა და SimpleNTAuthenticator-ის გამოყენებით შექმნილი Jena-ს ისტორიული მაგალითები უფრო ძველ transport თაობას ეკუთვნის. თუ კორპორატიული პროქსი მოითხოვს ავთენტიფიკაციის მექანიზმს, რომელიც მიმდინარე transport-ში მიუწვდომელია, შეათანხმეთ მხარდაჭერილი ინტეგრაცია ქსელის ადმინისტრატორთან, ნაცვლად იმისა, რომ ცადოთ იმ ძველი ავთენტიფიკაციის ობიექტების თანამედროვე ამშენებელში ჩატენვა.

დაკავშირებული სტატიები