小编Ila*_*nov的帖子

无法通过代理隧道.代理通过https返回"HTTP/1.1 407"

我尝试通过需要身份验证的https连接到服务器.此外,我在中间有一个http代理,也需要身份验证.我使用ProxyAuthSecurityHandler对代理进行身份验证,使用BasicAuthSecurityHandler对服务器进行身份验证.

接收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)
Run Code Online (Sandbox Code Playgroud)

我注意到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 = …
Run Code Online (Sandbox Code Playgroud)

authentication https proxy http-tunneling apache-wink

5
推荐指数
1
解决办法
3万
查看次数