package com.ch2;
import java.io.ByteArrayInputStream;
import java.io.InputStream;
import org.apache.commons.httpclient.Cookie;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.NameValuePair;
import org.apache.commons.httpclient.cookie.CookiePolicy;
import org.apache.commons.httpclient.methods.PostMethod;
import org.apache.commons.io.IOUtils;
public class HttpClientLogin {
public static void main(String[] args){
//登陆 Url
String loginUrl = "http://localhost:8080/test/web/login.do";
//需登陆后访问的 Url
String dataUrl = "http://localhost:8080/test/web/getWorklist.do";
HttpClient httpClient = new HttpClient();
//模拟登陆,按实际服务器端要求选用 Post 或 Get 请求方式
PostMethod postMethod = new PostMethod(loginUrl);
//设置登陆时要求的信息,一般就用户名和密码,验证码自己处理了
NameValuePair[] data = {
new NameValuePair("name", "aa"),
new NameValuePair("password", "password")
};
//{ "name": "aa", "password": "password"}
//postMethod.setRequestBody(data);
//向服务器写json
String json="{\"name\": \"aa\", \"password\": \"password\"}";
InputStream inputStream = new ByteArrayInputStream(json.getBytes());
postMethod.setRequestBody(inputStream);
try {
//设置 HttpClient 接收 Cookie,用与浏览器一样的策略
httpClient.getParams().setCookiePolicy(CookiePolicy.BROWSER_COMPATIBILITY);
httpClient.executeMethod(postMethod);
//获得登陆后的 Cookie
Cookie[] cookies=httpClient.getState().getCookies();
String tmpcookies= "";
for(Cookie c:cookies){
tmpcookies += c.toString()+";";
}
//进行登陆后的操作
PostMethod getMethod = new UTF8PostMethod(dataUrl);
//每次访问需授权的网址时需带上前面的 cookie 作为通行证
getMethod.setRequestHeader("cookie",tmpcookies);
//你还可以通过 PostMethod/GetMethod 设置更多的请求后数据
//例如,referer 从哪里来的,UA 像搜索引擎都会表名自己是谁,无良搜索引擎除外
postMethod.setRequestHeader("Referer", "http://unmi.cc");
postMethod.setRequestHeader("User-Agent","Unmi Spot");
httpClient.executeMethod(getMethod);
//打印出返回数据,检验一下是否成功
InputStream in=getMethod.getResponseBodyAsStream();
//System.out.println(IOUtils.toString(in,"UTF-8"));
String a=IOUtils.toString(in,"UTF-8");
System.out.println(a);
} catch (Exception e) {
e.printStackTrace();
}
}
private static class UTF8PostMethod extends PostMethod{
public UTF8PostMethod(String url){
super(url);
}
@Override
public String getRequestCharSet() {
//return super.getRequestCharSet();
return "UTF-8";
}
}
}
分享到:
相关推荐
在这个场景中,我们关注的是如何使用`httpclient`进行模拟登录并携带cookie来访问后续的URL。这个过程通常涉及到处理session和身份验证,对于开发需要登录功能的Web应用或自动化测试脚本尤其有用。 首先,`...
本主题将深入探讨如何使用HttpClient4库进行百度和58同城的模拟登陆操作。HttpClient4是一个强大的Java库,它提供了丰富的功能来执行HTTP请求,非常适合进行网页交互。 首先,我们来了解HttpClient4的基本用法。...
我们可以通过浏览器的开发者工具获取登录后的 Cookie,然后将其添加到 HttpClient 中,从而实现免登录访问。 HttpClient 的 Cookie 策略 HttpClient 的 Cookie 策略可以分为三种:BEST_MATCH、BROWSER_...
Oracle、META-INF和javax目录下的文件可能是库依赖或者元数据,它们确保了HTTPClient库和其他相关组件的正确运行。 学习这个示例可以帮助我们深入理解网络请求的工作原理,特别是在处理登录这类涉及身份验证的任务...
本文将详细介绍如何使用Apache HttpClient库进行模拟登录以及提交表单数据的操作。通过一个具体的示例程序来演示这一过程,帮助读者理解整个流程。 #### 使用场景 在Web应用开发过程中,常常需要模拟用户的登录行为...
Jsoup+httpclient 模拟...通过上述知识点,可以了解到使用Jsoup和HttpClient进行网页登录和内容抓取的完整流程和关键技术点。在实际开发中,这些知识点可以帮助开发者高效地处理HTML页面数据,实现对网页的自动化操作。
在模拟登录成功后,我们可以通过HttpClient访问方正系统的其他接口,获取课程、成绩等信息。以下是一些关键步骤: 1. 保持会话:登录成功后,服务器通常会返回一个session cookie。在后续的请求中,我们需要把这个...
4. **处理响应**:同样,登录成功后,获取并保存新的Cookie,以便进行后续的API调用。 总结来说,模拟登录微博平台,如新浪和腾讯,主要涉及HttpClient4的使用,包括创建HTTP客户端、构建POST请求、处理响应和...
总的来说,这个项目展示了如何结合HttpClient和Jsoup进行网络请求和页面解析,以实现对CSDN的模拟登录和内容抓取。在实际应用中,还需要考虑异常处理、页面动态加载、反爬策略等复杂情况,以确保程序的稳定性和效率...
本文将详细讲解如何获取`userToken`,以及使用`httpclient`进行相关操作的步骤。 首先,`userToken`是乐橙平台为每个用户分配的唯一标识,通常在用户登录成功后由服务器返回。它包含了用户的权限信息,用于后续API...
通过HttpClient,可以模拟浏览器进行网页访问和数据交互,这对于进行Web自动化测试和数据抓取等操作尤为有用。 - **模拟登录的必要性:** 在很多网站的交互过程中,登录是第一步。一旦登录成功,网站会生成一个或多...
Java爬虫模拟登陆是网络爬虫技术中一个重要的环节,特别是在需要登录后才能访问的数据抓取场景中。本文将深入探讨这一主题,介绍如何使用Java编写爬虫进行模拟登录,并获取登录后的网页数据。 首先,我们需要理解...
在本"C#实例教学之QQ登陆访问本地数据库"的教学中,我们将探讨如何使用C#编程语言来实现一个功能,允许用户通过QQ账号登录,并在登录后访问本地数据库。这个实例涵盖了多个关键知识点,包括C#的图形用户界面设计、...
8. **线程安全**:如果需要多线程操作,还需要考虑线程安全问题,避免并发访问时的数据冲突。 9. **依赖管理**:项目中引入的外部库(如HttpClient、Jsoup)需要通过Maven或Gradle等工具进行管理,确保版本兼容性。...
在IT领域,爬虫模拟登录是一项重要的技术,用于获取那些需要用户身份验证才能访问的数据。在Java中,HttpClient是一个常用库,它允许我们构建复杂的HTTP客户端应用,包括模拟登录功能。下面将详细介绍如何使用Java ...
在这个特定的场景中,爬虫需要处理登录过程,以便能够携带有效的COOKIE信息来访问受保护的网页,如题库数据。下面,我们将深入探讨如何实现这个功能,以及与MySQL数据库的结合。 首先,登录网站时通常需要发送一个...
在.NET开发环境中,针对阿里巴巴平台实现免登陆接口是一项常见的需求,尤其对于自动化测试、数据抓取或者集成系统来说,能够避免频繁的人工登录操作,提高工作效率。本文将深入讲解如何在.NET框架下实现这一功能。 ...
7. **知乎API**:知乎提供了一些官方的API,但它们通常有访问限制,且登录后的某些功能可能无法通过API获取。如果官方API无法满足需求,可能需要直接解析登录后的网页内容。 8. **模拟登录**:在登录过程中,可能会...
这通常涉及网络编程、身份验证、OAuth协议、JSON解析等相关技术,用于与QQ服务器进行安全的数据交换,获取用户的登录凭据和权限。 【标签】:“QQ登陆协议”和“安卓QQ登陆协议示例”是关键词,它们明确了我们要...
10. **合规性**:在编写爬虫时,务必遵守相关法律法规,尊重网站的Robots协议,并确保不对目标网站造成过大的访问压力。 通过理解和掌握以上知识点,我们可以构建一个功能完善的C#登录爬虫,既能模拟用户登录,也能...