我们有一个有趣的情况,基本的 GET HTTP 请求没有通过 IIS 服务器上的 Windows NTLM 授权。同时,我们在另一个成功执行的环境中运行相同的代码。
当我们通过浏览器重复请求时,它会成功执行。
似乎 Java 代码没有随请求发送正确的授权信息。我们正试图弄清楚这是怎么回事。使用的类来自java.net
包。我们尝试将帐户切换到本地系统,在该系统下 Tomcat 来回运行但没有成功。
代码尽可能简单:
public static String sendHttpRequest(String urlString, String method, boolean
disconnect) {
HttpURLConnection urlConnection = null;
String result = null;
try {
URL url = new URL(urlString);
urlConnection = (HttpURLConnection) url.openConnection();
urlConnection.addRequestProperty("Content-Length", "0");
urlConnection.setRequestMethod(method);
urlConnection.setUseCaches(false);
StringBuilder sb = new StringBuilder();
try (InputStream is = urlConnection.getInputStream()) {
InputStream buffer = new BufferedInputStream(is);
Reader reader = new InputStreamReader(buffer, "UTF-8");
int c;
while ((c = reader.read()) != -1) {
sb.append((char) c);
}
}
int statusCode = urlConnection.getResponseCode();
if (statusCode < 200 || statusCode >= 300) {
} else
result = sb.toString();
} catch (IOException e) {
LOGGER.warning(e.getMessage());
} finally {
if (disconnect && urlConnection != null) {
urlConnection.disconnect();
}
}
return result;
}
要回答的明确问题:如何在客户端记录/跟踪/调试用于身份验证的信息?任何提示将不胜感激:)