Për stivën HTTP të Jena të bazuar në JDK, e prezantuar në Jena 4.3, konfiguroni transportin që i jepet ndërtuesit të pyetjeve. Fjalëkalimi i pikës fundore SPARQL dhe fjalëkalimi i proxy-t mund të kërkohen nga makina të ndryshme.

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

Ky fragment ndërton një ekzekutim pyetjeje. endpointUrl është URL-ja reale e shërbimit SPARQL; proxyAuthenticator është një java.net.Authenticator që e siguron aplikacioni. Ekzekutoni dhe mbyllni ekzekutimin e pyetjes përmes ciklit normal të jetës së pyetjeve të aplikacionit.

Në metodën getPasswordAuthentication të atij autentifikuesi, ktheni PasswordAuthentication e proxy-t vetëm kur getRequestorType() == RequestorType.PROXY dhe kur hosti dhe porta që kërkojnë përputhen me ndërmjetësin e konfiguruar. Ktheni null për sfidat e palidhura. Lidhja e këtij objekti me klientin e mban zgjedhjen lokale për atë klient.

Lexoni çfarë kërkon proxy-t

Një përgjigje 407 tregon një sfidë autentikimi proxy. Titulli i saj Proxy-Authenticate tregon skemat e ofruara; vetëm statusi nuk e dallon Basic nga NTLM ose nga një skemë tjetër.

Krahasoni atë ofertë me aftësitë dhe politikën e autentikimit të klientit JDK të vendosur. Dhënia e emrit të përdoruesit dhe fjalëkalimit nuk shton një skemë të pambështetur. Për destinacione HTTPS, shqyrtoni edhe politikën jdk.http.auth.tunneling.disabledSchemes të JDK-së; proxy-ja normale HTTP ka një cilësim të veçantë disabledSchemes. Vlerat e parazgjedhura të JDK-së për autentikim Basic në CONNECT janë një nga këto kontrolle politikë.

Shembujt historikë të Jena me Apache HttpClient dhe SimpleNTAuthenticator i përkasin një gjenerate më të vjetër transporti. Nëse proxy-ja korporative kërkon një mekanizëm autentikimi që nuk ofrohet në transportin aktual, merrni një integrim të mbështetur me administratorin e rrjetit në vend që të përpiqeni t'i fusni ato objekte të vjetra autentikimi në ndërtuesin modern.

Artikuj të ngjashëm