Jena-ի JDK-ի վրա հիմնված HTTP շերտի համար, որը ներկայացվել է Jena 4.3-ում, կարգավորեք transport-ը, որը փոխանցվում է հարցում կառուցողին։ SPARQL վերջնակետի գաղտնաբառը և վստահված սերվերի գաղտնաբառը կարող են պահանջվել տարբեր մեքենաներից։

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

Այս հատվածը կառուցում է հարցումների կատարում։ endpointUrl-ը SPARQL ծառայության իրական URL-ն է. proxyAuthenticator-ը հավելվածի կողմից տրամադրվող java.net.Authenticator է։ Գործարկեք և փակեք հարցումների կատարումը հավելվածի սովորական հարցումների կյանքի ցիկլով։

Այդ հաստատիչի getPasswordAuthentication մեթոդում վերադարձրեք վստահված սերվերի PasswordAuthentication-ը միայն այն դեպքում, երբ getRequestorType() == RequestorType.PROXY է և երբ հարցում ուղարկող հոսթը և պորտը համապատասխանում են կարգավորված միջնորդին։ Անկապ մարտահրավերների համար վերադարձրեք null։ Այս օբյեկտը հաճախորդին կցելը ընտրությունը պահում է տեղային այդ հաճախորդի համար։

Կարդացեք, թե ինչ է պահանջում վստահված սերվերը

407 պատասխանը նշում է վստահված սերվերի հաստատման մարտահրավեր։ Նրա Proxy-Authenticate վերնագիրը հայտնում է առաջարկվող սխեմաները. միայն կարգավիճակը չի տարբերում Basic-ը NTLM-ից կամ այլ սխեմայից։

Համեմատեք այդ առաջարկը տեղակայված JDK հաճախորդի հնարավորությունների և հաստատման քաղաքականության հետ։ Օգտանուն և գաղտնաբառ տրամադրելը չի ավելացնում չաջակցվող սխեմա։ HTTPS նպատակների համար ստուգեք նաև JDK-ի jdk.http.auth.tunneling.disabledSchemes քաղաքականությունը. սովորական HTTP վստահված սերվերն ունի առանձին disabledSchemes կարգավորում։ CONNECT-ի համար JDK-ի Basic հաստատման կանխադրվածները նման քաղաքականության ստուգումներից մեկն են։

Apache HttpClient և SimpleNTAuthenticator օգտագործող Jena-ի պատմական օրինակները պատկանում են ավելի հին transport սերնդի։ Եթե կորպորատիվ վստահված սերվերը պահանջում է հաստատման մեխանիզմ, որը հասանելի չէ ընթացիկ transport-ում, պայմանավորվեք աջակցվող ինտեգրացիա ցանցի ադմինիստրատորի հետ՝ փոխարենը փորձելով այդ հին հաստատման օբյեկտները մղել ժամանակակից կառուցողի մեջ։

Առնչվող հոդվածներ