【问题标题】:How to use Apache Olingo behind a proxy如何在代理后面使用 Apache Olingo
【发布时间】:2017-01-12 15:24:22
【问题描述】:

即使我在代理后面,我也可以使用不同的浏览器和 Postman 成功访问以下 OData 服务: String SERVICE_ROOT =http://services.odata.org/V4/TripPinService/

但是,在 Java 中使用 Apache Olingo 我无法访问此服务。

-Dhttp.proxySet=true -Dhttp.proxyHost=http-proxy.example.com -Dhttp.proxyPort=8080 等 JVM 参数允许我执行基本的 URL 功能,例如检索 HTTP 状态代码(谷歌返回 200)。然而,使用 ODataClient 访问 OData-Service 是不可能的(下面的代码)。没有错误被抛出。

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

我做错了什么,我还有什么选择?

非常感谢。

【问题讨论】:

    标签: java apache proxy odata olingo


    【解决方案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")));
    

    【讨论】:

    • 感谢您的意见。我自己解决了这个问题。尽管如此,我还是接受了您的回答,因为我非常感谢您的意见。谢谢! :)
    • 谢谢!我有一个类似的问题,在寻找解决方案时,我偶然发现了你的问题。上面建议的方法解决了我的问题。
    【解决方案2】:

    我自己解决了这个问题。在 VM 参数中,我现在只有

    -Djava.net.preferIPv4Stack=true
    

    此外,我只在应用程序中定义了代理配置:

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

    这对我有用。 :)

    【讨论】:

      【解决方案3】:
      URI uri;
      String scheme = "http";
              try {
                  uri = new URI  (scheme,null,host,port,null,null,null);
      
      
              } catch (URISyntaxException e) {
                  throw(e);
              }
              HttpClientFactory clientProxy = new ProxyWrappingHttpClientFactory(uri,userName,password );
      
              client.getConfiguration().setHttpClientFactory(clientProxy);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-07-16
        • 1970-01-01
        • 2020-02-02
        • 1970-01-01
        • 2015-03-12
        • 2018-08-01
        • 2011-01-17
        • 1970-01-01
        相关资源
        最近更新 更多