做了好几个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;
}
}
分享到:
相关推荐
HttpClient是Apache基金会开发的一个HTTP客户端库,主要用于处理HTTP请求。HttpClient 4.3版本是对该库的一次重要...了解这些知识点,可以帮助我们更好地利用HttpClient 4.3封装工具类,高效、稳定地进行HTTP请求操作。
HttpClientHelper 对这个类进行了封装,使得开发者无需直接与HttpClient接口打交道,而是通过更简洁、易用的方法调用来实现网络通信。这提高了代码的可读性和可维护性。 单例模式是软件设计模式的一种,确保一个类...
在HttpClient中,你可以通过`HttpPost`类来创建一个POST请求,然后使用`setEntity`方法添加请求体。最后,通过`HttpClient`的`execute`方法发送请求并获取响应。 2. **Get请求**: Get请求是最简单的HTTP请求,...
HttpClient是个很不错的开源框架(org.appache.http),封装了访问http的请求头,参数,内容体,响应等等,使用起来更方面更强大。 HttpURLConnection是java的标准类,可以实现简单的基于URL请求、响应功能,什么都...
`HttpClient`是一个被广泛使用的类,用于发起HTTP请求并接收响应。它在.NET框架中得到了很好的支持和封装。与其他语言如Java或Objective-C中的类似功能相比,`HttpClient`在.NET平台上的实现更加便捷高效。 #### 三...
在这个场景下,"使用HttpClient调试android接口-通用方法"的标题表明我们将讨论如何使用HttpClient来调试Android应用中的API接口。下面,我们将深入探讨HttpClient的基础知识、调试技巧以及如何封装通用方法。 1. *...
总之,`httpclient`库提供了一种高效且灵活的方式来模拟用户登录并携带cookie访问其他网页,这对于自动化测试、数据抓取或需要保持登录状态的Web服务来说是非常有用的。正确地理解和使用这些技术,能够帮助开发者更...
4. **工具类的封装**:根据描述,有一个工具类能够有效解决乱码问题。通常,这样的工具类会包含一个方法,如`createHtmlPage`,它会处理所有与解码相关的细节,确保正确读取和处理响应内容。 5. **静态化处理**:在...
在.NET框架中,HttpClient类提供了异步调用Web API的能力。本文将详细介绍如何在WPF应用程序中使用HttpClient异步调用Web API。 首先,需要理解异步编程的重要性。传统的同步网络请求会阻塞调用线程,导致UI无法...
这个头文件定义了 `HttpClient` 类,该类封装了 HTTP 请求的相关操作,如设置 URL、POST 参数、请求方法(GET 或 POST)等,并提供了发送请求和处理响应的方法。 `HttpClient.cpp` 文件是实现文件,它实现了 `...
要使用HttpClient,你需要将"HTTPclient.jar"添加到你的项目类路径中。然后,你可以通过以下步骤来创建一个简单的HTTP GET请求: 1. 创建HttpClient实例:`CloseableHttpClient httpClient = HttpClients.create...
内容包括了基本的 HttpClient 使用方法以及 SSL 访问的配置步骤。随着 HttpClient 版本的更新和功能的扩展,教程也将不断更新以涵盖更多高级特性和最佳实践。 总结:HttpClient 是 Java 开发者进行 HTTP 请求的重要...
在网络功能方面,Cocos2d-x提供了HttpClient类,使得游戏能够进行网络数据的发送和接收,实现与服务器的交互。下面我们将深入探讨HttpClient在网络访问中的应用及其核心概念。 HttpClient是Cocos2d-x提供的一个网络...
使用URL类的实例可以打开一个网络资源的输入流,获取网页内容是网络编程中最基础的操作之一。通过建立URL对象,并调用openStream方法,可以直接获得资源的InputStream。为了提高效率和兼容性,通常会将InputStream...
本主题将深入探讨如何在这些客户端环境中利用HttpClient类来访问API,从而实现与远程服务器的数据交互。 HttpClient是.NET Framework 4.5及更高版本引入的一个强大工具,它为发送HTTP请求和接收响应提供了简洁、...
HttpClient3.1.jar是Apache软件基金会的一个...然而,需要注意的是,HttpClient3.1已较为陈旧,后续的版本如HttpClient 4.x引入了更多的改进和优化,因此在新的项目中,建议使用更新的版本以获得更好的性能和兼容性。
这使得HttpClient能够安全地访问需要身份验证的资源。 另外,HttpClient还提供了对Cookie的管理。通过`CookiePolicy`和`CookieSpec`,我们可以控制Cookie的接收和发送策略,确保合规性。 在使用过程中,我们还需要...
本文将深入探讨基于HttpClient 4.3的工具类,尤其是如何处理自签名HTTPS站点的访问问题。 首先,让我们理解什么是自签名HTTPS证书。在标准的HTTPS通信中,网站的服务器会提供由权威证书颁发机构(CA)签发的数字...