Za Jenu HTTP stog zasnovan na JDK-u, uveden u Jena 4.3, konfigurirajte transport koji se predaje graditelju upita. Lozinku za SPARQL završnu točku i lozinku za proxy mogu zatražiti različita računala.

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

Ovaj fragment gradi izvršavanje upita. endpointUrl stvarni je URL usluge SPARQL; proxyAuthenticator je java.net.Authenticator koji pruža aplikacija. Pokrenite i zatvorite izvršavanje upita kroz uobičajeni životni ciklus upita u aplikaciji.

U metodi getPasswordAuthentication tog autentifikatora vratite PasswordAuthentication proxyja samo kada getRequestorType() == RequestorType.PROXY i kada se host i port koji šalju zahtjev podudaraju s konfiguriranim posrednikom. Za nepovezane izazove vratite null. Pričvršćivanje ovog objekta na klijent zadržava izbor lokalnim za taj klijent.

Pročitajte što proxy traži

Odgovor 407 označava izazov autentifikacije na proxyju. Njegovo zaglavlje Proxy-Authenticate govori koje se sheme nude; sam status ne razlikuje Basic od NTLM-a ili neke druge sheme.

Usporedite tu ponudu s mogućnostima instaliranog JDK klijenta i njegovom politikom autentifikacije. Davanje korisničkog imena i lozinke ne dodaje nepodržanu shemu. Za HTTPS odredišta provjerite i JDK politiku jdk.http.auth.tunneling.disabledSchemes; obično HTTP posredovanje ima zasebnu postavku disabledSchemes. Zadane vrijednosti JDK-a za Basic autentifikaciju pri CONNECT-u jedna su takva provjera politike.

Povijesni Jena primjeri s Apache HttpClient i SimpleNTAuthenticator pripadaju starijoj generaciji transporta. Ako korporativni proxy zahtijeva mehanizam autentifikacije koji nije dostupan u trenutačnom transportu, dogovorite podržanu integraciju s mrežnim administratorom umjesto da te stare objekte za autentifikaciju pokušavate ugurati u moderni graditelj.

Povezani članci