У меня есть следующий код, который я использовал с Docusign Rest API walk through. Поскольку я за прокси-сервером, я добавил информацию прокси.DocuSign REST API через прокси-сервер
public HttpURLConnection initializeRequest(String url, String method,
String body, String httpAuthHeader) {
try {
Proxy proxy = new Proxy(Proxy.Type.HTTP,
new InetSocketAddress("proxyServer address", proxyPort));
conn = (HttpURLConnection) new URL(url).openConnection(proxy);
conn.setRequestMethod(method);
conn.setRequestProperty("X-DocuSign-Authentication",
httpAuthHeader);
conn.setRequestProperty("Accept", "application/json");
if (method.equalsIgnoreCase("POST")) {
conn.setRequestProperty("Content-Type",
"multipart/form-data; boundary=BOUNDARY");
conn.setDoOutput(true);
} else {
conn.setRequestProperty("Content-Type", "application/json");
}
return conn;
} catch (Exception e) {
throw new RuntimeException(e); // simple exception handling
// please review it
}
}
Это отлично работает, но в последнее время прокси-сервер требует аутентификации и я получаю сообщение об ошибке 401 несанкционированной на моих остальных вызовах.
Я действительно изменил код, чтобы иметь в нем аутентификатор, но у меня все еще такая же проблема, любые предложения, что я могу попробовать, кроме этого?
public HttpURLConnection initializeRequest(String url, String method, String body, String httpAuthHeader) {
try {
Proxy proxy = new Proxy(Proxy.Type.HTTP,
new InetSocketAddress("proxyServerAdress", intPort));
Authenticator authenticator = new Authenticator() {
public PasswordAuthentication getPasswordAuthentication() {
return (new PasswordAuthentication("username",
"password".toCharArray()));
}
};
Authenticator.setDefault(authenticator);
conn = (HttpURLConnection) new URL(url).openConnection(proxy);
conn.setRequestMethod(method);
conn.setRequestProperty("X-DocuSign-Authentication",
httpAuthHeader);
conn.setRequestProperty("Accept", "application/json");
if (method.equalsIgnoreCase("POST")) {
conn.setRequestProperty("Content-Type",
"multipart/form-data; boundary=BOUNDARY");
conn.setDoOutput(true);
} else {
conn.setRequestProperty("Content-Type", "application/json");
}
return conn;
} catch (Exception e) {
throw new RuntimeException(e); // simple exception handling
// please review it
}
}
Используйте [requestb.in] (http://requestb.in/), чтобы узнать, что вы отправляете на DocuSign. Ваша базовая аутентификация с прокси-сервером, вероятно, отправляется в DocuSign, чего не ожидается. Жалуйтесь на своих прокси-пользователей. Тот факт, что они нарушили ваше рабочее приложение, должно быть их проблемой для исправления. –