Para sa stack ng HTTP ng Jena na nakabatay sa JDK, na ipinakilala sa Jena 4.3, i-configure ang transport na ipinapasa sa tagabuo ng query. Ang password ng endpoint ng SPARQL at ang password ng proxy ay maaaring hilingin ng magkaibang makina.

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();

Binubuo ng bahaging ito ang isang pagpapatupad ng query. Ang endpointUrl ay ang aktwal na URL ng serbisyo ng SPARQL; ang proxyAuthenticator ay isang java.net.Authenticator na ibinibigay ng aplikasyon. Patakbuhin at isara ang pagpapatupad ng query sa karaniwang siklo ng buhay ng query ng aplikasyon.

Sa pamamaraang getPasswordAuthentication ng tagapagpatotoong iyon, ibalik ang PasswordAuthentication ng proxy lamang kapag getRequestorType() == RequestorType.PROXY at kapag tumutugma ang host at port na humihiling sa naka-configure na tagapamagitan. Ibalik ang null para sa mga hindi kaugnay na hamon. Kapag ikinabit ang bagay na ito sa kliyente, nananatiling lokal sa kliyenteng iyon ang pagpili.

Basahin ang hinihiling ng proxy

Ang tugon na 407 ay nagpapahiwatig ng hamon sa pagpapatotoo sa proxy. Sinasabi ng header nitong Proxy-Authenticate ang mga iniaalok na scheme; ang status lamang ay hindi nakikilala ang Basic mula sa NTLM o iba pang scheme.

Ihambing ang alok na iyon sa mga kakayahan at patakaran sa pagpapatotoo ng naka-deploy na kliyenteng JDK. Ang pagbibigay ng username at password ay hindi nagdaragdag ng hindi sinusuportahang scheme. Para sa mga destinasyong HTTPS, suriin din ang patakaran ng jdk.http.auth.tunneling.disabledSchemes ng JDK; ang ordinaryong proxy ng HTTP ay may hiwalay na setting na disabledSchemes. Ang mga default ng JDK para sa Basic na pagpapatotoo sa CONNECT ay isa sa mga pagsusuring iyon ng patakaran.

Ang mga makasaysayang halimbawa ng Jena na gumamit ng Apache HttpClient at SimpleNTAuthenticator ay kabilang sa mas lumang henerasyon ng transport. Kung ang proxy ng korporasyon ay nangangailangan ng mekanismo ng pagpapatotoo na wala sa kasalukuyang transport, ayusin ang sinusuportahang integrasyon sa tagapangasiwa ng network sa halip na pilitin ang mga lumang bagay ng pagpapatotoo sa makabagong tagabuo.

Kaugnay na mga artikulo