За HTTP стека на Jena, базиран на JDK и въведен в 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 е действителният URL на услугата SPARQL; proxyAuthenticator е java.net.Authenticator, предоставен от приложението. Стартирайте и затворете изпълнението на заявката чрез обичайния жизнен цикъл на заявките в приложението.

В метода getPasswordAuthentication на този удостоверител връщайте PasswordAuthentication на проксито само когато getRequestorType() == RequestorType.PROXY и когато заявяващите хост и порт съвпадат с конфигурирания посредник. Връщайте null за несвързани предизвикателства. Прикачването на този обект към клиента запазва избора локален за този клиент.

Прочетете какво иска проксито

Отговор 407 означава предизвикателство за удостоверяване през прокси. Заглавката Proxy-Authenticate съобщава предлаганите схеми; самото състояние не различава Basic от NTLM или друга схема.

Съпоставете това предложение с възможностите на внедрения JDK клиент и неговата политика за удостоверяване. Предоставянето на потребителско име и парола не добавя неподдържана схема. За HTTPS дестинации проверете също политиката jdk.http.auth.tunneling.disabledSchemes на JDK; обикновеното HTTP проксиране има отделна настройка disabledSchemes. Стойностите по подразбиране за Basic удостоверяване на JDK при CONNECT са една такава проверка на политиката.

Историческите примери за Jena с Apache HttpClient и SimpleNTAuthenticator принадлежат на по-старо поколение transport. Ако корпоративното прокси изисква механизъм за удостоверяване, недостъпен в текущия transport, организирайте поддържана интеграция с мрежовия администратор, вместо да се опитвате да вкарате онези стари обекти за удостоверяване в модерния конструктор.

Подобни статии