Jena 4.3-də təqdim edilən Jena-nın JDK əsaslı HTTP yığını üçün sorğu qurucusuna verilən transportu konfiqurasiya edin. SPARQL son nöqtəsinin parolu ilə proksinin parolu müxtəlif maşınlar tərəfindən tələb oluna bilər.

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

Bu fraqment sorğu icrası qurur. endpointUrl faktiki SPARQL xidmətinin URL-idir; proxyAuthenticator tətbiqin təqdim etdiyi java.net.Authenticator-dur. Sorğu icrasını tətbiqin adi sorğu həyat dövrü ilə başladın və bağlayın.

Həmin autentifikatorun getPasswordAuthentication metodunda proksinin PasswordAuthentication obyektini yalnız getRequestorType() == RequestorType.PROXY olduqda və sorğu göndərən host və port konfiqurasiya edilmiş vasitəçi ilə uyğun gəldikdə qaytarın. Əlaqəsiz çağırışlar üçün null qaytarın. Bu obyekti müştəriyə qoşmaq seçimi həmin müştərinin daxilində saxlayır.

Proksinin nə tələb etdiyini oxuyun

407 cavabı proksi autentifikasiyası çağırışını göstərir. Onun Proxy-Authenticate başlığı təklif olunan sxemləri bildirir; yalnız status Basic-i NTLM-dən və ya başqa sxemdən ayırmır.

Bu təklifi yerləşdirilmiş JDK müştərisinin imkanları və autentifikasiya siyasəti ilə tutuşdurun. İstifadəçi adı və parol vermək dəstəklənməyən sxem əlavə etmir. HTTPS hədəfləri üçün JDK-nın jdk.http.auth.tunneling.disabledSchemes siyasətini də yoxlayın; adi HTTP proksisinin ayrıca disabledSchemes parametri var. CONNECT üçün JDK-nın Basic autentifikasiya standartları belə siyasət yoxlamalarından biridir.

Apache HttpClient və SimpleNTAuthenticator istifadə edən tarixi Jena nümunələri daha köhnə transport nəslinə aiddir. Əgər korporativ proksi cari transportda mövcud olmayan autentifikasiya mexanizmi tələb edirsə, həmin köhnə autentifikasiya obyektlərini müasir qurucuya yeritməyə çalışmaq əvəzinə şəbəkə administratoru ilə dəstəklənən inteqrasiya təşkil edin.

Əlaqəli məqalələr