繁体   English   中英

如何在代理后面使用 Apache Olingo

[英]How to use Apache Olingo behind a proxy

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

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

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

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

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

非常感谢。

如果您使用 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")));

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

-Djava.net.preferIPv4Stack=true

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

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

这对我有用。 :)

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM