如何使用身份验证配置公司HTTP代理

时间:2019-07-18 14:42:28

标签: docusignapi

我正在测试Java的DocuSign API客户端。

问题在于测试环境和生产环境都在需要身份验证(用户名+密码,而不仅仅是主机+端口)的公司代理后面。

但是我看不到配置DocuSign ApiClient的方法。

我只能设置http.proxyHosthttp.proxyPort,但不能设置http.proxyUserhttp.proxyPassword

System.getProperties().put("http.proxyHost", host);
System.getProperties().put("https.proxyHost", host);
System.getProperties().put("http.proxyPort", String.valueOf(port));
System.getProperties().put("https.proxyPort", String.valueOf(port));
System.getProperties().put("http.proxyUser", user);
System.getProperties().put("http.proxyPassword", password);
Authenticator.setDefault(
   new Authenticator() {
      @Override
        public PasswordAuthentication getPasswordAuthentication() {
            if (getRequestorType() == Authenticator.RequestorType.PROXY) {
                System.out.println(getRequestingHost() + ":" + getRequestingPort() + " -> " + getRequestingURL());
                return new PasswordAuthentication(user, password.toCharArray());
            }
            return null;
        }
   }
);

设置Authenticator.setDefault()可以使用默认的Java http客户端,但是在使用DocuSign ApiClient时不会显示任何效果。

2 个答案:

答案 0 :(得分:0)

是的,您可以使用:

对于HTTPS(推荐):https.proxyHost,https.proxyPort,https.proxyUser和https.proxyPassword

对于HTTP:http.proxyHost,http.proxyPort,http.proxyUser和http.proxyPassword

它是在2月发布的客户端版本2.9.0中添加的,因此,如果您拥有该版本或更高版本,那就应该不错

答案 1 :(得分:0)

我已经从2.8.0更新到2.9.0。

我已经对其进行了测试,但是目前我仍然遇到相同的异常com.sun.jersey.api.client.ClientHandlerException: java.io.IOException: Unable to tunnel through proxy. Proxy returns "HTTP/1.0 407 Proxy Authentication Required"

我按照上一个答案的建议使用了此代码:

System.getProperties().put("http.proxyHost", host);
System.getProperties().put("https.proxyHost", host);
System.getProperties().put("http.proxyPort", String.valueOf(port));
System.getProperties().put("https.proxyPort", String.valueOf(port));
System.getProperties().put("http.proxyUser", user);
System.getProperties().put("https.proxyUser", user);
System.getProperties().put("http.proxyPassword", password);
System.getProperties().put("https.proxyPassword", password);

问题是http.proxyUserhttp.proxyPassword未被DocuSign API客户端识别。