За Jena-ин HTTP стек заснован на JDK, представљен у Jena 4.3, конфигуришите транспорт који се прослеђује градитељу упита. Лозинку за 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 и када се host и port захтева поклапају са конфигурисаним посредником. За невезане изазове вратите null. Качењем овог објекта на клијента избор остаје локалан за тај клијент.

Прочитајте шта прокси тражи

Одговор 407 означава изазов аутентикације проксија. Његово заглавље Proxy-Authenticate говори које шеме су понуђене; сам статус не разликује Basic од NTLM или друге шеме.

Упоредите ту понуду са могућностима и политиком аутентикације распоређеног JDK клијента. Навођење корисничког имена и лозинке не додаје неподржану шему. За HTTPS одредишта такође проверите политику jdk.http.auth.tunneling.disabledSchemes у JDK-у; обично HTTP проксирање има засебно подешавање disabledSchemes. JDK подразумевана подешавања Basic аутентикације за CONNECT једна су таква провера политике.

Историјски Jena примери који користе Apache HttpClient и SimpleNTAuthenticator припадају старијој генерацији транспорта. Ако корпоративни прокси захтева механизам аутентикације који није доступан у тренутном транспорту, договорите подржану интеграцију са администратором мреже уместо да покушавате да те старе објекте аутентикације пребаците у савремени градитељ.

Повезани чланци