我编写了与非公共Web服务进行通信的代码,即使通过代理连接,一切似乎也能正常工作。在使用授权更改为代理后,问题就开始了。我收到以下警告:
WARN [HttpMethodDirector] Required credentials not available for BASIC <any realm>@destination.url.com:80
WARN [HttpMethodDirector] Preemptive authentication requested but no default credentials available
之后抛出异常:java.net.SocketTimeoutException:read timed out
“destination.url.com”是目的地地址,所以我想我已经过了代理。
我在stackoverflow上的某个地方读到,当不需要传递用户名/密码时,通常会抛出此警告。我不知道这是不是真的。 Using HttpProxy to connect to a host with preemtive authentication
此外,有些人指出了同样的问题,但可以通过将经过身份验证的代理运行到经过身份验证的远程存储库来重现。我的情况正好相反。目标不需要授权(授权数据被放入SOAP消息体中)。 https://www.jfrog.com/jira/browse/RTFACT-4147
任何想法如何帮助我的情况?以下是我的一些代码:
MyStub stub = new MyStub();
Options Options = stub._getServiceClient().getOptions();
Options.setProperty(org.apache.axis2.Constants.Configuration.CHARACTER_SET_ENCODING,"utf-8");
Options.setProperty(org.apache.axis2.Constants.Configuration.ENABLE_SWA,org.apache.axis2.Constants.VALUE_FALSE);
HttpTransportProperties.ProxyProperties proxyProperties = new HttpTransportProperties.ProxyProperties();
proxyProperties.setProxyName("proxyAddress");
proxyProperties.setProxyPort("proxyPort");
proxyProperties.setUserName("proxyUsername");
proxyProperties.setPassWord("proxyPassword");
Options.setProperty(org.apache.axis2.transport.http.HTTPConstants.PROXY,proxyProperties);
答案 0 :(得分:0)
options.setProperty(org.apache.axis2.transport.http.HTTPConstants.CHUNKED,Boolean.FALSE);