Pro HTTP zásobník Jeny postavený na JDK, představený v Jena 4.3, nastavte transport předávaný tvůrci dotazu. Heslo koncového bodu SPARQL a heslo proxy mohou vyžadovat různé stroje.

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

Tento fragment sestaví provádění dotazu. endpointUrl je skutečná adresa služby SPARQL; proxyAuthenticator je java.net.Authenticator dodaný aplikací. Provádění dotazu spusťte a uzavřete v obvyklém životním cyklu dotazů aplikace.

V metodě getPasswordAuthentication tohoto autentizátoru vracejte PasswordAuthentication proxy jen tehdy, když platí getRequestorType() == RequestorType.PROXY a když se hostitel a port žadatele shodují s nakonfigurovaným prostředníkem. Pro nesouvisející výzvy vracejte null. Připojením tohoto objektu ke klientovi zůstává volba lokální pro daného klienta.

Přečtěte si, co proxy požaduje

Odpověď 407 označuje výzvu k ověření přes proxy. Jeho hlavička Proxy-Authenticate sděluje nabízené schémy; samotný stav nerozlišuje Basic od NTLM ani jiné schéma.

Porovnejte tuto nabídku s možnostmi nasazeného klienta JDK a jeho zásadami ověřování. Zadání uživatelského jména a hesla nepřidá nepodporovanou schému. Pro cíle HTTPS zkontrolujte také zásadu JDK jdk.http.auth.tunneling.disabledSchemes; běžné proxyování HTTP má samostatné nastavení disabledSchemes. Výchozí hodnoty ověřování Basic v JDK pro CONNECT jsou jednou z takových kontrol zásad.

Historické příklady Jeny s Apache HttpClient a SimpleNTAuthenticator patří starší generaci transportu. Pokud podniková proxy vyžaduje mechanismus ověřování, který v současném transportu není k dispozici, domluvte podporovanou integraci se správcem sítě, místo abyste se snažili ty staré objekty ověřování protlačit do moderního tvůrce.

Související články