`
Mybeautiful
  • 浏览: 298968 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

封装好的类,使用httpClient访问网页。

阅读更多

    做了好几个httpclient访问网站的项目了,我发布一个可以直接使用的类供大家参考吧;希望对想用httpclient的人有所帮助。

 

import java.io.IOException;
import java.util.Enumeration;
import java.util.Properties;

import org.apache.commons.httpclient.Cookie;
import org.apache.commons.httpclient.Header;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpException;
import org.apache.commons.httpclient.HttpStatus;
import org.apache.commons.httpclient.NameValuePair;
import org.apache.commons.httpclient.methods.PostMethod;
/**
 * @author Stony Zhang  (Mybeautiful)
 * @MSN  stonyz@live.com
 * @QQ   55279427
 *
 */
public class Netway {
	private HttpClient httpClient = new HttpClient();

	private String serverURL = "";

	public String postPage(String page) {
		String url = this.getURL(page);
		PostMethod postMethod = new PostMethod(url);
		return this.post(postMethod);
	}

	private String getURL(String page) {
		// TODO Auto-generated method stub
		return "http://" + this.serverURL + "/" + page;
	}

	public String postPage(String page, Properties pdata) {
		String url = this.getURL(page);
		PostMethod postMethod = new PostMethod(url);
		NameValuePair[] data = new NameValuePair[pdata.size()];
		Enumeration keys = pdata.keys();
		int i = 0;
		for (; keys.hasMoreElements();) {
			String k = (String) keys.nextElement();
			String v = (String) pdata.get(k);
			data[i] = new NameValuePair(k, v);
			i++;
		}
		postMethod.setRequestBody(data);
		return this.post(postMethod);
	}

	private String post(PostMethod postMethod) {
		String result = "";
		try {
			int statusCode = httpClient.executeMethod(postMethod);
			// 301 or 302
			if (statusCode == HttpStatus.SC_MOVED_PERMANENTLY
					|| statusCode == HttpStatus.SC_MOVED_TEMPORARILY) {
				Header locationHeader = postMethod
						.getResponseHeader("location");
				String location = null;
				if (locationHeader != null) {
					location = locationHeader.getValue();
					System.out
							.println("The page was redirected to:" + location);
				} else {
					System.err.println("Location field value is null.");
				}
			}
			result = postMethod.getResponseBodyAsString();
		} catch (HttpException e) {
			e.printStackTrace();
		} catch (IllegalArgumentException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}

		System.out.println(result);
		return result;

	}

	public void setServerURL(String serverURL) {
		this.serverURL = serverURL;

	}

	public String getServerURL() {
		return serverURL;
	}

}
 
1
2
分享到:
评论

相关推荐

    httpclient4.3 封装工具类

    HttpClient是Apache基金会开发的一个HTTP客户端库,主要用于处理HTTP请求。HttpClient 4.3版本是对该库的一次重要...了解这些知识点,可以帮助我们更好地利用HttpClient 4.3封装工具类,高效、稳定地进行HTTP请求操作。

    HttpClientHelper 工具类

    HttpClientHelper 对这个类进行了封装,使得开发者无需直接与HttpClient接口打交道,而是通过更简洁、易用的方法调用来实现网络通信。这提高了代码的可读性和可维护性。 单例模式是软件设计模式的一种,确保一个类...

    HttpClient接口调用工具类(附带demo)

    在HttpClient中,你可以通过`HttpPost`类来创建一个POST请求,然后使用`setEntity`方法添加请求体。最后,通过`HttpClient`的`execute`方法发送请求并获取响应。 2. **Get请求**: Get请求是最简单的HTTP请求,...

    使用HttpClient下载图片

    HttpClient是个很不错的开源框架(org.appache.http),封装了访问http的请求头,参数,内容体,响应等等,使用起来更方面更强大。 HttpURLConnection是java的标准类,可以实现简单的基于URL请求、响应功能,什么都...

    WebApi系列-通过HttpClient来调用WebApi接口.doc

    `HttpClient`是一个被广泛使用的类,用于发起HTTP请求并接收响应。它在.NET框架中得到了很好的支持和封装。与其他语言如Java或Objective-C中的类似功能相比,`HttpClient`在.NET平台上的实现更加便捷高效。 #### 三...

    使用HttpClient调试android接口-通用方法

    在这个场景下,"使用HttpClient调试android接口-通用方法"的标题表明我们将讨论如何使用HttpClient来调试Android应用中的API接口。下面,我们将深入探讨HttpClient的基础知识、调试技巧以及如何封装通用方法。 1. *...

    httpUtil httpclient 登陆携带cookie访问下一个连接

    总之,`httpclient`库提供了一种高效且灵活的方式来模拟用户登录并携带cookie访问其他网页,这对于自动化测试、数据抓取或需要保持登录状态的Web服务来说是非常有用的。正确地理解和使用这些技术,能够帮助开发者更...

    彻底解决httpClient乱码问题

    4. **工具类的封装**:根据描述,有一个工具类能够有效解决乱码问题。通常,这样的工具类会包含一个方法,如`createHtmlPage`,它会处理所有与解码相关的细节,确保正确读取和处理响应内容。 5. **静态化处理**:在...

    如何在WPF应用程序中通过HttpClient调用Web API

    在.NET框架中,HttpClient类提供了异步调用Web API的能力。本文将详细介绍如何在WPF应用程序中使用HttpClient异步调用Web API。 首先,需要理解异步编程的重要性。传统的同步网络请求会阻塞调用线程,导致UI无法...

    Arduino HttpClient 库文件

    这个头文件定义了 `HttpClient` 类,该类封装了 HTTP 请求的相关操作,如设置 URL、POST 参数、请求方法(GET 或 POST)等,并提供了发送请求和处理响应的方法。 `HttpClient.cpp` 文件是实现文件,它实现了 `...

    httpclient所有jar包以及实现类

    要使用HttpClient,你需要将"HTTPclient.jar"添加到你的项目类路径中。然后,你可以通过以下步骤来创建一个简单的HTTP GET请求: 1. 创建HttpClient实例:`CloseableHttpClient httpClient = HttpClients.create...

    httpClient4.1入门教程.

    内容包括了基本的 HttpClient 使用方法以及 SSL 访问的配置步骤。随着 HttpClient 版本的更新和功能的扩展,教程也将不断更新以涵盖更多高级特性和最佳实践。 总结:HttpClient 是 Java 开发者进行 HTTP 请求的重要...

    cocos2dx HttpClient网络访问

    在网络功能方面,Cocos2d-x提供了HttpClient类,使得游戏能够进行网络数据的发送和接收,实现与服务器的交互。下面我们将深入探讨HttpClient在网络访问中的应用及其核心概念。 HttpClient是Cocos2d-x提供的一个网络...

    HttpClient入门陆小马功钟浩.pdf

    使用URL类的实例可以打开一个网络资源的输入流,获取网页内容是网络编程中最基础的操作之一。通过建立URL对象,并调用openStream方法,可以直接获得资源的InputStream。为了提高效率和兼容性,通常会将InputStream...

    C#客户端/WPF/WINFORM通过HttpClient访问API

    本主题将深入探讨如何在这些客户端环境中利用HttpClient类来访问API,从而实现与远程服务器的数据交互。 HttpClient是.NET Framework 4.5及更高版本引入的一个强大工具,它为发送HTTP请求和接收响应提供了简洁、...

    HttpClient3.1.jar

    HttpClient3.1.jar是Apache软件基金会的一个...然而,需要注意的是,HttpClient3.1已较为陈旧,后续的版本如HttpClient 4.x引入了更多的改进和优化,因此在新的项目中,建议使用更新的版本以获得更好的性能和兼容性。

    commons-httpclient-3.1.jar

    这使得HttpClient能够安全地访问需要身份验证的资源。 另外,HttpClient还提供了对Cookie的管理。通过`CookiePolicy`和`CookieSpec`,我们可以控制Cookie的接收和发送策略,确保合规性。 在使用过程中,我们还需要...

    基于HttpClient 4.3的可访问自签名HTTPS站点的新版工具类

    本文将深入探讨基于HttpClient 4.3的工具类,尤其是如何处理自签名HTTPS站点的访问问题。 首先,让我们理解什么是自签名HTTPS证书。在标准的HTTPS通信中,网站的服务器会提供由权威证书颁发机构(CA)签发的数字...

Global site tag (gtag.js) - Google Analytics