Jena 4.3+ SPARQL خېرىدارلىرى ئۈچۈن ۋاكالەتچى ئارقىلىق دەلىللەش
زامانىۋى Jena سوراق ئىجراسى ئىشلىتىدىغان JDK HTTP خېرىدارىغا ۋاكالەتچى تاللىغۇچ ۋە دەلىللىگۈچنى ئۇلاڭ.
Jena 4.3 دا تونۇشتۇرۇلغان Jena نىڭ JDK ئاساسىدىكى HTTP قاتلىمى ئۈچۈن، سوراق قۇرغۇچىغا بېرىلىدىغان 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 تەڭشىكى بار. CONNECT ئۈچۈن JDK نىڭ Basic دەلىللەش سۈكۈتتىكى قىممەتلىرى مۇشۇنداق سىياسەت تەكشۈرۈشلىرىنىڭ بىرى.
Apache HttpClient ۋە SimpleNTAuthenticator ئىشلەتكەن Jena نىڭ تارىخىي مىساللىرى كونا transport ئەۋلادىغا تەۋە. ئەگەر شىركەت ۋاكالەتچىسى ھازىرقى transport تا يوق دەلىللەش مېخانىزمىنى تەلەپ قىلسا، ئۇ كونا دەلىللەش ئوبيېكتلىرىنى زامانىۋى قۇرغۇچىغا تىقىشتۇرۇشقا ئۇرۇنماي، تور باشقۇرغۇچى بىلەن قوللىنىدىغان بىرلەشمە ھەل قىلىڭ.