我正在开发一个线程java应用程序,它击中了一个url来发送sms消息 问题是我在NTLM代理服务器后面,我已经搜索了大部分时间并尝试了许多解决方案,但没有成功应用程序给出标题错误,当我尝试打印错误响应时,我发现它的错误页面来自代理服务器
这是击中代码
System.setProperty("java.net.useSystemProxies", "true");
System.setProperty("http.proxyHost", AUTH_PROXY");
System.setProperty("http.proxyPort", AUTH_PROXY_PORT);
System.setProperty("http.proxyUser", AUTH_USER);
System.setProperty("http.proxyPassword", AUTH_PASSWORD);
Authenticator.setDefault(
new Authenticator() {
public PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(AUTH_USER, AUTH_PASSWORD.toCharArray());
}
}
);
URL url = new URL(urlString);
HttpURLConnection httpConn =(HttpURLConnection)url.openConnection();
httpConn.setReadTimeout(10000);
String resp = getResponse(httpConn);
logger.info("urlString=" + urlString);
logger.info("Response=" + resp);
在这里,我得到了respoonse
private String getResponse(HttpURLConnection Conn) throws IOException {
InputStream is;
if (Conn.getResponseCode() >= 400) {
is = Conn.getErrorStream();
} else {
is = Conn.getInputStream();
}
String response = "";
byte buff[] = new byte[512];
int b = 0;
while ((b = is.read(buff, 0, buff.length)) != -1) {
response += new String(buff, 0, b);
}
is.close();
return response;
}
感谢任何帮助
答案 0 :(得分:7)
经过多次尝试后,我意识到上面的代码很好,我得到的400错误来自不编码可能有空格的URL参数
刚刚使用
URLEncoder.encode(urlParameter,"UTF-8");
代码有空格的参数解决了问题