上个星期做了一个爬虫,主要是实现手机上不通过标准浏览器的方式实现Facebook认证过程,期间遇到个问题需要手动处理redirect。
HttpClient4.0的GET方法完全redirect,POST方法部分支持redirect,也就是说,我们在大部分情况下爬网页时中间的一些redirect过程可以当作是透明的,输入一个URL得到的是redirect后的最终结果页。
刚好,我需要redirect过程中的一个临时页面的一些信息,而HttpClient4.0 "自作主张"地帮我忽略了,如何手动处理呢?
结过查看其内部源码,HttpClient默认是通过DefaultRedirectHandler来管理跳转的,该类继承自接口,该接口有两个方法
public URI getLocationURI(HttpResponse response, HttpContext context)
throws ProtocolException;
public boolean isRedirectRequested(HttpResponse response,
HttpContext context);
其中isRedirectRequested是用于判断当前的请求是否需要redirect。我们只需要定义一个自己的RedirectHandler来处理redirect就可以了,如下:
public class DummyRedirectHandler implements RedirectHandler {
public URI getLocationURI(HttpResponse response, HttpContext context)
throws ProtocolException {
// TODO Auto-generated method stub
return null;
}
public boolean isRedirectRequested(HttpResponse response,
HttpContext context) {
// 由于我们需要手动处理所有的redirect,所以直接return false
return false;
}
}
AbstractHttpClient类setRedirectHandler方法用于设置自定义RedirectHandler实现
httpclient.setRedirectHandler(new DummyRedirectHandler());
然后通过搬运捕获Header("Location"),可以取得跳转中间过程的URL,希望能帮到像我这样做爬虫天天在网上的童鞋。
分享到:
相关推荐
总的来说,HttpClient 4.0是Java开发者处理HTTP请求的强大工具,其高效的连接管理和异步操作能力使其在各种网络应用场景中表现出色。了解并熟练掌握HttpClient的使用,对于提升Java应用的网络通信效率具有重要意义。
HttpClient 4.0 是一个由 Apache 软件基金会开发的 Java 库,专为处理 HTTP 协议而设计。这个版本在功能、性能和易用性上都有显著提升,是 Java 开发者进行网络通信时的得力工具。在本文中,我们将深入探讨 ...
本篇文章将详细介绍HTTPClient 4.0的使用方法,包括其核心概念、基本操作和示例代码。 一、核心概念 1. HttpClient实例:HttpClient对象是执行HTTP请求的核心,负责建立连接、发送请求和接收响应。通过`...
1.含有官方HttpClient4.0的jar包 2.有之前HttpClient3.0的jar包,就是import importorg.apache.commons.*; 3.包含jsoup,解析HTML的jar包 4.包含jcookie.jar及jtidy-r938.jar的jar包.
此外,HttpClient 4.0还支持连接管理、重试策略、缓存等高级功能,使得开发者可以更加灵活地处理网络通信。 二、核心组件与架构 HttpClient 4.0的核心组件包括: 1. **HttpClient**:这是整个库的主入口,负责...
httpclient-4.0.jar, httpclient-4.0.jar, httpclient-4.0.jar
【作品名称】:基于Java + HTTPClient 4.0,采用MySQL存储爬取数据,支持多进程并发执行的新浪微博爬虫 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训...
《HttpClient 4.0 使用详解:访问开心网组件实例》 HttpClient 是 Apache 开源基金会提供的一个 HTTP 客户端库,被广泛应用于 Java 开发中,用于执行 HTTP 请求。HttpClient 4.0 版本引入了许多改进和新特性,使得...
HttpClient是Apache基金会开发的一个HTTP客户端库,主要用于处理HTTP请求和响应。HttpClient 4.0版本引入了许多改进和新特性,...开发者可以通过深入学习HttpClient 4.0,提升网络编程的能力,更好地处理网络通信问题。
在探讨HttpClient 4.0的`post()`方法中四个关键“头信息”的设置之前,我们首先需要理解HttpClient是什么以及它在Java开发中的作用。 ### HttpClient简介 HttpClient是Apache的一个开源项目,它为Java应用程序提供...
Android升级后旧版本的httpclient4.0 apache-mime4j-0.6 commons-codec-1.4 commons-logging-1.1.1 httpclient-4.0.1 httpcore-4.0.1 httpmime-4.0.1
### HttpClient 4.0中文教程知识点总结 #### 一、HttpClient概述 **1.1 执行请求** - **HTTP请求**: HTTP请求包含了方法名称(GET、POST等)、URL以及必要的请求头信息。HttpClient允许开发者创建并发送这些请求...
httpclient-4.0-beta1.jar
【Java天气预告】项目是基于htmlparser2.0和httpclient4.0这两个库实现的,主要用于抓取和解析网络上的天气信息。这个项目对于学习Java网络编程和HTML解析非常有帮助,它揭示了如何利用HTTP协议获取网页数据以及如何...
包括了httpclient的所有包,commons-httpclient3.0.jar,httpclient4.0.jar,commons-logging1.1.1.jar,commons-codec-1.3.jar等
httpclient-4.0-beta2.jarhttpclient-4.0-beta2.jarhttpclient-4.0-beta2.jarhttpclient-4.0-beta2.jarhttpclient-4.0-beta2.jarhttpclient-4.0-beta2.jarhttpclient-4.0-beta2.jarhttpclient-4.0-beta2.jar
本项目利用Apache HttpClient库的4.0-alpha2版本,旨在构建一个基于HTTP协议的网站分析器,以便对网页内容进行抓取、解析和处理。HttpClient是一个功能强大的Java库,它提供了丰富的API来实现复杂的HTTP请求,包括...
HttpClient 是 Apache Jakarta Common 下的子项目,可以用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包,...本文首先介绍 HTTPClient,然后根据作者实际工作经验给出了一些常见问题的解决方法。
2013-11-21 15:31 292,890 httpclient-4.0.2.jar 2017-12-20 12:08 351,132 httpclient-4.1.1.jar 2012-08-03 01:45 451,595 httpclient-4.1.2-sources.jar 2012-08-03 01:44 352,254 httpclient-4.1.2.jar 2012-08-...