HttpClient是HttpComponents(简称为hc)项目其中的一部份,访问地址:http://hc.apache.org/
HttpClient是一个代码级的Http客户端工具,可以使用它模拟浏览器向Http服务器发送请求。使用HttpClient还需要HttpCore.后者包括Http请求与Http响应的代码封装。
Hello World
Java代码 收藏代码
public final static void main(String[] args) throws Exception {
HttpClient httpclient = new DefaultHttpClient();
try {
HttpGet httpget = new HttpGet("http://www.apache.org/");
System.out.println("executing request " + httpget.getURI());
HttpResponse response = httpclient.execute(httpget);
HttpEntity entity = response.getEntity();
System.out.println("----------------------------------------");
System.out.println(response.getStatusLine());
if (entity != null) {
System.out.println("Response content length: " + entity.getContentLength());
}
System.out.println("----------------------------------------");
InputStream inSm = entity.getContent();
Scanner inScn = new Scanner(inSm);
while (inScn.hasNextLine()) {
System.out.println(inScn.nextLine());
}
// Do not feel like reading the response body
// Call abort on the request object
httpget.abort();
} finally {
// When HttpClient instance is no longer needed,
// shut down the connection manager to ensure
// immediate deallocation of all system resources
httpclient.getConnectionManager().shutdown();
}
}
[点击查看原始大小图片]
使用HC模拟Firefox的请求
1:分析请求包中这六个头信息
2:代码
Java代码 收藏代码
/**
* @param args
* @throws IOException
*/
public static void main(String[] args) {
HttpClient httpClient = new DefaultHttpClient();
try {
HttpGet httpget = new HttpGet("http://www.iteye.com");
httpget.setHeader("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");
httpget.setHeader("Accept-Language", "zh-cn,zh;q=0.5");
httpget.setHeader("User-Agent", "Mozilla/5.0 (Windows NT 5.1; rv:7.0.1) Gecko/20100101 Firefox/7.0.1)");
httpget.setHeader("Accept-Encoding", "gzip, deflate");
httpget.setHeader("Accept-Charset", "GB2312,utf-8;q=0.7,*;q=0.7");
httpget.setHeader("Host", "www.iteye.com");
httpget.setHeader("Connection", "Keep-Alive");
HttpResponse response = httpClient.execute(httpget);
HttpEntity entity = response.getEntity();
System.out.println("----------------------------------------");
System.out.println(response.getStatusLine());
if (entity != null) {
System.out.println("Response content length: " + entity.getContentLength());
}
System.out.println("----------------------------------------");
InputStream inSm = entity.getContent();
Scanner inScn = new Scanner(inSm);
while (inScn.hasNextLine()) {
System.out.println(inScn.nextLine());
}
// Do not feel like reading the response body
// Call abort on the request object
httpget.abort();
} catch (Exception e) {
e.printStackTrace();
} finally {
// When HttpClient instance is no longer needed,
// shut down the connection manager to ensure
// immediate deallocation of all system resources
httpClient.getConnectionManager().shutdown();
}
}
3:效果
[点击查看原始大小图片]
分享到:
相关推荐
在本例中,我们使用了Firefox浏览器来模拟用户的行为。 首先,我们需要设置Firefox浏览器的驱动程序,这是因为Selenium需要使用驱动程序来控制浏览器。在本例中,我们使用了geckodriver驱动程序。 接下来,我们...
rv:26.0) Gecko/20100101 Firefox/26.0"); get.addHeader("Host", "www.dajie.com"); get.addHeader("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"); get.addHeader("Accept-...
rv:13.0) Gecko/20100101 Firefox/13.0.1' ); $ http -> get ( 'http://www.example.com/' ); echo $ http -> get_body (); POST请求 $ http = new HttpClient (); $ http -> set_header ( 'User-Agent' , 'Mozilla...
7. **兼容性**:HTMLUnit模仿了Firefox浏览器的行为,因此大多数在Firefox上工作良好的网页也将在HTMLUnit中正常工作。 在使用HTMLUnit时,开发者需要注意以下几点: - **依赖管理**:HTMLUnit依赖于其他库,如 ...
在实际开发中,你可能还会遇到一些挑战,如动态加载内容(使用如Selenium或Puppeteer库解决)、JavaScript渲染(借助Headless Chrome或Firefox)以及处理JSON或XML数据。Java的Jackson或Gson库可用于解析JSON,而...
Selenium支持多种编程语言,包括C#,并且能与各大主流浏览器如Chrome、Firefox、IE等配合使用。 其次,**HtmlAgilityPack** 是一个用于处理HTML文档的.NET库,它提供了强大的HTML解析和修改能力。如果实例中需要...
Selenium支持多种浏览器,如Chrome、Firefox等,通过WebDriver接口与它们交互。 此外,为了避免频繁请求同一网站导致IP被封,我们需要实现延时策略和代理IP池。延时策略可以通过Task.Delay实现,而获取和管理代理IP...
6. 集成开发环境 (IDE):Selenium 提供了一个集成开发环境,Selenium IDE,这是一个Firefox插件,允许用户通过录制和回放功能快速创建测试脚本。 7. 测试框架集成:Selenium 可以与JUnit 和 TestNG 等测试框架无缝...
Selenium支持多种浏览器,包括Chrome、Firefox等,可以提供更灵活的选择。在C#.NET中,可以使用Selenium WebDriver接口与PhantomJS配合,进一步提升爬虫的交互能力和适应性。通过Selenium,可以模拟用户的各种操作,...
2. **动态加载内容处理**: 对于使用Ajax技术加载的内容,可以借助Selenium WebDriver模拟浏览器行为,或者使用Headless Chrome/Firefox抓取。 3. **反爬虫策略**: 了解常见的反爬虫手段,如User-Agent欺骗、滑动...
它支持不同浏览器的实现差异(如IE和Firefox)。 2. **发送请求**: `Request`方法用于发送HTTP请求。它支持GET和POST两种方法,并允许指定回调函数来处理响应。 3. **响应处理**: `Response`方法用于处理服务器...
可以使用Selenium、Headless Chrome/Firefox等工具模拟浏览器执行JavaScript。 7. **反爬虫策略**:百度贴吧可能会有反爬虫机制,如验证码、IP限制、User-Agent检测等,爬虫开发者需要研究并采取相应的应对措施,如...
4. **Selenium IDE**:这是一个Firefox插件,可以录制和回放测试用例,方便快速创建测试脚本。 5. **JAR 文件**:包含所有必要的类库,如`client-combined.jar`,它是运行Selenium测试所必需的,包含了WebDriver和...
安装Selenium WebDriver时,需要根据实际使用的浏览器(如Chrome或Firefox)选择对应的驱动程序。 ```csharp Install-Package Selenium.WebDriver Install-Package Selenium.WebDriver.ChromeDriver ``` 下面是...
这时,可能需要使用支持JavaScript执行的库如Selenium或Headless Chrome/Firefox来获取完整页面内容。 在Java编写的爬虫Demo中,开发者通常会展示如何初始化网络连接、发送请求、解析响应、提取数据以及存储数据的...
WebDriver支持多种浏览器,包括Chrome、Firefox、Edge和IE等。 2. Selenium Server:这是一个独立的服务,主要用于处理WebDriver与浏览器之间的通信。尤其是当使用远程WebDriver或需要使用不同的浏览器版本时,...
Selenium IDE是一款基于Firefox的插件,用于录制、编辑和回放Web应用的测试脚本。在JForum的注册页面,我们可以录制用户的操作,如输入用户名、密码等,然后回放这些操作以检查注册功能的正确性。Selenium IDE提供...
使用开发者工具(如Chrome的开发者工具或Firefox的Web Console)观察网络请求,找到加载内容的API,然后在Java中复现这些请求。 海量抓取知乎内容时,我们需要考虑数据的组织结构。一种常见的方法是使用树状结构,...
在这个版本中,Selenium 提供了对多种浏览器的支持,包括Chrome、Firefox、Internet Explorer等,并且兼容多种编程语言,如Java、Python、C#等。 1. **Selenium WebDriver**: Selenium 2.53 引入了WebDriver API,...