java - 我想通过从 java 应用程序传递凭据来登录网页

标签 java ntlm

我想通过从 Java 应用程序传递凭据来登录网页? 我正在使用下面的代码,但出现一些错误:

HttpClient client = new HttpClient();
client.getParams().setParameter("User Name", "user");
client.getParams().setParameter("Password", "password");
GetMethod request = new GetMethod("url");

错误: 信息:没有可用于 NTLM @192.168.224.142:7048 的凭据

我还尝试了以下代码:

HttpClient client = new HttpClient();
        client.getState().setCredentials(AuthScope.ANY, new NTCredentials("user", "password", "ip:port", "http"));
        GetMethod request = new GetMethod("url");

错误:信息:NTLM 身份验证失败

建议一种通过从 java 应用程序传递凭据来登录网页的方法?

最佳答案

您正在将您的用户凭据作为 GET 请求参数传递。该网站需要基于 NTLM 的身份验证(用户名和密码不会发送到服务器)。

使用org.apache.http.auth.NTCredentials来存储您的用户名和密码。

NTCredentials userCredentials = new NTCredentials(userName, password,
                                  System.getProperty("COMPUTERNAME"), domain);
CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
credentialsProvider.setCredentials(new AuthScope(AuthScope.ANY_HOST,
                                       AuthScope.ANY_PORT), userCredentials);
HttpClientContext httpClientContext = HttpClientContext.create();
httpClientContext.setCredentialsProvider(credentialsProvider);
HttpClient httpClient = HttpClientBuilder.create().
                      setDefaultCredentialsProvider(credentialsProvider).build();

您可以根据自己的需要随意修改 AuthScope

关于java - 我想通过从 java 应用程序传递凭据来登录网页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35270470/

相关文章:

java - 无法在 Java 中使用自定义比较器

java - 将集合中的泛型类型与同一类型 java 进行比较

Python 泡沫错误 "' NoneType' 对象没有属性 'promotePrefixes'“

http - Go HTTP NTLM 请求中的 Windows 系统凭据

java - 多线程应用程序中的 NTLM 身份验证失败

java - 在Selenium Java中从列表中选择随机元素并单击它,但getAttribute不等于0

Java 文本转语音 API

java - 如何从 Java 1.8.0 升级到 Java 11?

android - Android 中的 NTLM 身份验证

http - 使用 Angular2 的 NTLM 身份验证