4

我正在尝试使用 java.net 的 HttpUrlConnection 在我的 Java 应用程序中对支持 NTLM 身份验证的服务器进行身份验证。

问题是应用程序无法发送 Authenticate 响应。

我已将代理附加到 http 连接,以便通过提琴手路由流量。在提琴手中,我可以看到正在发送协商消息,并收到服务器挑战。但在此之后,应用程序只是停止说它收到了 401,而没有发送 type3 身份验证消息。

有任何想法吗?这是代码 -

Authenticator.setDefault(new Authenticator() {
    public PasswordAuthentication getPasswordAuthentication() {
        return new PasswordAuthentication("username",
                                          "password".toCharArray());
    }
});
URL url = new URL("https://service_url.svc");

// Proxy for fiddler
Proxy proxy = new Proxy(Proxy.Type.HTTP,
                  new InetSocketAddress("localhost", 8888));

// Create a connection
HttpURLConnection conn = (HttpURLConnection)url.openConnection(proxy);
conn.setRequestMethod("GET");
conn.setDoInput(true);
conn.setDoOutput(true);
conn.setUseCaches(false);

InputStream is = conn.getInputStream();
BufferedReader rd = new BufferedReader(new InputStreamReader(is));
String line;
while ((line = rd.readLine()) != null)
    System.out.println(line);

rd.close();

感谢任何帮助。谢谢。

4

0 回答 0