gpt4 book ai didi

java - 如何使用 Apache HttpClient 4.2.1 或 > 对网站进行身份验证?

转载 作者:行者123 更新时间:2023-11-30 04:52:46 25 4
gpt4 key购买 nike

我是 http 编程新手,我正在尝试对不使用 API 的网站进行身份验证,但遇到了一些麻烦。我发现了一些其他问题似乎与我的相似,但没有一个答案对我有用。

我尝试了几种不同的方法,但还没有找到一种有效的方法。实际上,我曾经让它对我有用过一次,但没有 checkin 该代码(我知道 - 我在想什么?)。我无法再次回到那个工作版本。以下是我迄今为止尝试过的一些事情:

    HttpClient client = new DefaultHttpClient(); //or any method to get a client instance, with a 'threadsafe' connection manager or otherwise
Credentials credentials = new UsernamePasswordCredentials(userName, passwd);
((DefaultHttpClient) client).getCredentialsProvider()
.setCredentials(AuthScope.ANY, credentials);

// website is defined as my target website & this constitutes the valid login URL
HttpPost post = new HttpPost(https + website + "/login");
HttpEntity entity = new StringEntity("Username="+ userName +"&Password="+ passwd);
post.setEntity(entity);

HttpResponse response = client.execute(post);
EntityUtils.consume(entity);
entity = response.getEntity();
EntityUtils.consume(entity);

// the protected part of the site is over http after authentication succeeds
HttpGet get = new HttpGet(http + website +"/protected");
response = client.execute(get);
entity = response.getEntity();
String content = EntityUtils.toString(entity);

此时,我从网站返回的“实体”是“错误”:“未经授权的访问”。

您会注意到我有一个“Credentials”实例被传递给 HttpClient,并且我还将用户名和密码放入 HttpPost 实体中。我分别尝试了这些方法,它们都返回了“错误”:“未经授权的访问”。结果。

我尝试过使用单线程连接管理器的 DefaultHttpClient 以及“ThreadSafeClientConnManager”,但都不起作用。

最佳答案

首先尝试使用此网址登录(先将网址复制到文本板或其他内容 - 然后编辑它):

https://www.centraldispatch.com/login?uri=%2Fprotected%2F&Username=XXX&Password=YYY

只需将 XXX 和 YYY 替换为您的真实用户/密码 - 确保其有效。

然后使用:

List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(1);
nameValuePairs.add(new BasicNameValuePair("Username","Your username"));
nameValuePairs.add(new BasicNameValuePair("Password","Your password"));
post.setEntity(new UrlEncodedFormEntity(nameValuePairs));
HttpResponse response = client.execute(post);
BufferedReader rd = new BufferedReader(new InputStreamReader(
response.getEntity().getContent()));
String line = "";
while ((line = rd.readLine()) != null) {
System.out.println(line);
}

关于java - 如何使用 Apache HttpClient 4.2.1 或 > 对网站进行身份验证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9508606/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com