Ar gyfer stac HTTP Jena sy'n seiliedig ar JDK, a gyflwynwyd yn Jena 4.3, ffurfweddwch y transport a roddir i adeiladydd yr ymholiad. Gall peiriannau gwahanol ofyn am gyfrinair pwynt terfyn SPARQL a chyfrinair y dirprwy.

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

Mae'r darn hwn yn adeiladu gweithrediad ymholiad. endpointUrl yw URL gwirioneddol y gwasanaeth SPARQL; proxyAuthenticator yw java.net.Authenticator a ddarperir gan y rhaglen. Gweithredwch a chaewch y gweithrediad ymholiad drwy gylch bywyd arferol ymholiadau'r rhaglen.

Ym method getPasswordAuthentication y dilysydd hwnnw, dychwelwch PasswordAuthentication y dirprwy dim ond pan fo getRequestorType() == RequestorType.PROXY a phan fo'r gwesteiwr a'r porth sy'n gofyn yn cyfateb i'r cyfryngydd a ffurfweddwyd. Dychwelwch null ar gyfer heriau diberthynas. Mae atodi'r gwrthrych hwn i'r cleient yn cadw'r dewis yn lleol i'r cleient hwnnw.

Darllenwch beth mae'r dirprwy yn ei ofyn

Mae ymateb 407 yn dynodi her dilysu dirprwy. Mae ei bennawd Proxy-Authenticate yn dweud pa gynlluniau a gynigir; nid yw'r statws ar ei ben ei hun yn gwahaniaethu Basic oddi wrth NTLM na chynllun arall.

Cymharwch y cynnig hwnnw â galluoedd a pholisi dilysu'r cleient JDK sydd wedi'i osod. Nid yw darparu enw defnyddiwr a chyfrinair yn ychwanegu cynllun heb ei gefnogi. Ar gyfer cyrchfannau HTTPS, archwiliwch bolisi jdk.http.auth.tunneling.disabledSchemes y JDK hefyd; mae gan ddirprwyo HTTP cyffredin osodiad disabledSchemes ar wahân. Mae ragosodiadau dilysu Basic y JDK ar gyfer CONNECT yn un o'r gwiriadau polisi hynny.

Mae enghreifftiau hanesyddol Jena sy'n defnyddio Apache HttpClient a SimpleNTAuthenticator yn perthyn i genhedlaeth transport hŷn. Os yw'r dirprwy corfforaethol yn mynnu mecanwaith dilysu nad yw ar gael yn y transport presennol, trefnwch integreiddiad â chefnogaeth gyda'r gweinyddwr rhwydwaith yn lle ceisio bwrw'r gwrthrychau dilysu hen hynny i'r adeiladydd modern.

Erthyglau cysylltiedig