我想通过从 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/