我尝试通过需要认证的https连接到服务器。此外,我在中间有一个需要认证的http代理。我使用ProxyAuthSecurityHandler与代理进行身份验证,并使用BasicAuthSecurityHandler与服务器进行身份验证。
收到java.io.IOException:无法通过代理进行隧道连接。
我注意到ProxyAuthSecurityHandler的实现希望响应代码是407,但是在调试期间由于抛出的IOException,我们永远无法进入第二部分。
代码片段如下:
收到java.io.IOException:无法通过代理进行隧道连接。
Proxy returns "HTTP/1.1 407 Proxy Auth Required"
at sun.net.www.protocol.http.HttpURLConnection.doTunneling(HttpURLConnection.java:1525)
at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect (AbstractDelegateHttpsURLConnection.java:164)
at sun.net.www.protocol.https.HttpsURLConnectionImpl.connect(HttpsURLConnectionImpl.java:133)
at org.apache.wink.client.internal.handlers.HttpURLConnectionHandler.processRequest(HttpURLConnectionHandler.java:97)
我注意到ProxyAuthSecurityHandler的实现希望响应代码是407,但是在调试期间由于抛出的IOException,我们永远无法进入第二部分。
代码片段如下:
ClientConfig configuration = new ClientConfig();
configuration.connectTimeout(timeout);
MyBasicAuthenticationSecurityHandler basicAuthProps = new MyBasicAuthenticationSecurityHandler();
basicAuthProps.setUserName(user);
basicAuthProps.setPassword(password);
configuration.handlers(basicAuthProps);
if ("true".equals(System.getProperty("setProxy"))) {
configuration.proxyHost(proxyHost);
if ((proxyPort != null) && !proxyPort.equals("")) {
configuration.proxyPort(Integer.parseInt(proxyPort));
}
MyProxyAuthSecurityHandler proxyAuthSecHandler =
new MyProxyAuthSecurityHandler();
proxyAuthSecHandler.setUserName(proxyUser);
proxyAuthSecHandler.setPassword(proxyPass);
configuration.handlers(proxyAuthSecHandler);
}
restClient = new RestClient(configuration);
// create the createResourceWithSessionCookies instance to interact with
Resource resource = getResource(loginUrl);
// Request body is empty
ClientResponse response = resource.post(null);
尝试使用wink客户端版本1.1.2和1.2.1,但问题在两个版本中都重复出现。