2017-01-12 16 views
2

я могу успешно достигнуть следующих OData-сервиса с использованием различных браузеров, а также с помощью Почтальон даже так я за прокси-сервером: String SERVICE_ROOT =http://services.odata.org/V4/TripPinService/Как использовать Apache Olingo за прокси

Однако, используя Apache Olingo в Java Я не удалось получить доступ к этой услуге.

Параметры JVM, такие как -Dhttp.proxySet=true -Dhttp.proxyHost=http-proxy.example.com -Dhttp.proxyPort=8080, позволяют выполнять основные функции URL-адреса, такие как получение кодов состояния HTTP (google возвращает 200). Тем не менее доступ OData-Service с использованием ODataClient невозможен (код ниже). Ошибок не возникает.

ODataClient client = ODataClientFactory.getClient(); 
ODataServiceDocumentRequest request = client.getRetrieveRequestFactory().getServiceDocumentRequest(SERVICE_ROOT); 
ODataRetrieveResponse<ClientServiceDocument> response = request.execute(); 

Я попытался использовать возможности прокси-сервера в пределах Olingo, однако без какого-либо успеха:

client.getConfiguration().setHttpClientFactory(new ProxyWrappingHttpClientFactory(URI.create("http://http-proxy.example.com:8080"))); 

Что я делаю не так, какие варианты у меня осталось?

спасибо.

ответ

1

Если вы находитесь за прокси-сервером NTLM, вы можете попробовать NTLMAuthHttpClientFactory.

NTLMAuthHttpClientFactory ntlm = new NTLMAuthHttpClientFactory(username, password, workstation, domain); 
client.getConfiguration().setHttpClientFactory(ntlm); 

В случае, если не работает, вы можете попробовать с cntlm. Установите его, измените имя пользователя, пароль, домен и прокси в C:\Program Files (x86)\Cntlm\cntlm.ini, а затем вызовите net start cntlm. Используйте это для Olingo:

client.getConfiguration().setHttpClientFactory(new ProxyWrappingHttpClientFactory(URI.create("http://localhost:3128"))); 
+0

Спасибо за ввод. Я решил проблему самостоятельно. Тем не менее я принял ваш ответ, потому что я очень оценил ваш вклад. Спасибо! :) –

+0

Спасибо! У меня была аналогичная проблема, и, ища решение, я наткнулся на ваш вопрос. Предлагаемый выше подход решил проблему в моем случае. – GeoK

0

я как-то решить эту проблему самостоятельно. В аргументов VM теперь я только

-Djava.net.preferIPv4Stack=true 

Далее я определил прокси конфигурации только в приложении:

client = ODataClientFactory.getClient(); 
    client.getConfiguration().setHttpClientFactory(
      new ProxyWrappingHttpClientFactory(URI.create("http-prox.example.com:8080"))); 

Это работает для меня. :)