`

HttpClient4使用(转)

 
阅读更多

详见:http://www.oschina.net/code/snippet_54371_1515

 

 

需用到的包:

commons-logging-1.1.1.jar

httpclient-4.0.3.jar

httpcore-4.0.1.jar

 

 

package main;

import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.URI;
import java.net.URISyntaxException;
import java.util.ArrayList;
import java.util.List;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.ParseException;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;

public class Main {

	private static HttpClient hc = new DefaultHttpClient();

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		List<NameValuePair> params = new ArrayList<NameValuePair>();
		params.add(new BasicNameValuePair("email", "xxx@gmail.com"));
		params.add(new BasicNameValuePair("pwd", "xxx"));
		params.add(new BasicNameValuePair("save_login", "1"));

		String url = "http://www.oschina.net/action/user/login";

		String body = post(url, params);
		System.out.println(body);
	}

	/**
	 * Get请求
	 * @param url
	 * @param params
	 * @return
	 */
	public static String get(String url, List<NameValuePair> params) {
		String body = null;
		try {
			// Get请求
			HttpGet httpget = new HttpGet(url);
			// 设置参数
			String str = EntityUtils.toString(new UrlEncodedFormEntity(params));
			httpget.setURI(new URI(httpget.getURI().toString() + "?" + str));
			// 发送请求
			HttpResponse httpresponse = hc.execute(httpget);
			// 获取返回数据
			HttpEntity entity = httpresponse.getEntity();
			body = EntityUtils.toString(entity);
			if (entity != null) {
				entity.consumeContent();
			}
		} catch (ParseException e) {
			e.printStackTrace();
		} catch (UnsupportedEncodingException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		} catch (URISyntaxException e) {
			e.printStackTrace();
		}
		return body;
	}

	/**
	 * // Post请求
	 * @param url
	 * @param params
	 * @return
	 */
	public static String post(String url, List<NameValuePair> params) {
		String body = null;
		try {
			// Post请求
			HttpPost httppost = new HttpPost(url);
			// 设置参数
			httppost.setEntity(new UrlEncodedFormEntity(params));
			// 发送请求
			HttpResponse httpresponse = hc.execute(httppost);
			// 获取返回数据
			HttpEntity entity = httpresponse.getEntity();
			body = EntityUtils.toString(entity);
			if (entity != null) {
				entity.consumeContent();
			}
		} catch (UnsupportedEncodingException e) {
			e.printStackTrace();
		} catch (ClientProtocolException e) {
			e.printStackTrace();
		} catch (ParseException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
		return body;
	}

}
 

 

分享到:
评论

相关推荐

    httpclient4中文教程.doc

    本教程将介绍HttpClient的基本概念和使用方法。 首先,HttpClient的核心功能是执行HTTP请求。通过创建HttpClient实例和指定的HTTP方法对象(如HttpGet、HttpPost等),可以向目标服务器发起请求并获取响应。以下是...

    httpClient4jar包

    在描述中提到的“httpclient4”,指的是HttpClient 4.x系列,这是一个稳定且广泛使用的版本。 在HttpClient 4.4.1.jar中,包含了HttpClient的主要功能实现,如HTTP方法(GET, POST等)、连接管理、重定向处理、身份...

    使用httpclient访问servlet

    本篇文章将详细探讨如何使用HttpClient来访问Servlet,并阐述相关的核心知识点。 首先,我们需要理解Servlet的本质。Servlet是一种Java类,它扩展了服务器的功能,用于处理HTTP请求并生成响应。通常,Servlet部署在...

    Android HttpClient用到的jar包

    在较旧的Android版本中,我们可以使用`DefaultHttpClient`,但在新版本中,由于HttpClient已被弃用,建议使用其他替代方案,如OkHttp或Retrofit。 3. **创建HttpPost对象**:根据需要上传文件的URL创建一个`...

    HttpClientHelper 工具类

    这样确保了在整个应用程序生命周期中,HttpClientHelper只有一个实例被创建和使用。 5. **异常处理**:HttpClientHelper 应该包含了适当的错误处理机制,如捕获网络异常、解析异常等,以确保在出现问题时能够给出...

    HttpClient 调用WebService示例

    4. **设置SOAP请求体**: 使用`StringEntity`或`HttpEntityEnclosingRequestBase`来设置SOAP请求体。这通常涉及到将SOAP XML转换为字符串并添加到请求中: ```java String soapRequestBody = ...

    一个使用HttpClient调用天气预报接口的例程

    然而,由于这个例程使用了HttpClient,我们需要了解其工作原理和如何在Android环境中正确使用。 7. **注意事项**: - 异步处理:网络请求不应在主线程中进行,以免阻塞用户界面,应使用异步任务或Android的...

    新浪,腾讯微博HttpClient4模拟登陆

    本文将深入探讨如何使用Java中的HttpClient4库来实现对新浪和腾讯微博的模拟登录。HttpClient4是一个强大的HTTP客户端库,它允许开发者执行HTTP请求并处理响应,非常适合进行网页交互。 首先,我们来看`Sina.java`...

    java使用HttpClient通过url下载文件到本地

    - **创建HttpClient实例**:首先,我们需要创建一个HttpClient对象,例如使用`HttpClientBuilder`或`HttpClients.createDefault()`方法。 - **构建HttpGet请求**:使用`HttpGet`类创建一个HTTP GET请求,指定要...

    Java HttpClient 全部的jar包

    在Java项目中,使用HttpClient可以实现与Web服务器的高效通信。下面将详细介绍这12个jar包的作用及其在HttpClient中的功能: 1. `commons-beanutils-1.8.0.jar`: Apache Commons BeanUtils库提供了对Java Beans属性...

    httpclient

    在描述中提到的博客链接(由于实际无法访问,这里将根据一般HttpClient的使用情况来解释)可能包含了一些关于如何使用HttpClient的实际示例或常见问题解答。通常,这些内容会涵盖如何初始化HttpClient实例,构建请求...

    httpclient-4.5.3官方API中文文档_最新译版_2886K

    4. 执行请求:使用HttpClient的execute方法发送请求,返回HttpResponse对象。 5. 处理响应:获取HttpResponse的状态码、头部信息,并通过HttpEntity获取实体内容。 四、HttpClient的高级特性 1. 连接管理:...

    httpClient

    然而,需要注意的是,HttpClient 4.x和5.x版本提供了更多的改进和新特性,比如更好的性能,更现代的HTTP协议支持,以及更好的错误处理机制。因此,在新的项目中,开发者通常会优先考虑使用更新的版本。 在实际使用...

    httpclient-4.5.3 api 中文版

    4. **重试处理(Retry Handler)**:HttpClient 提供了`HttpRequestRetryHandler`接口,让你可以自定义当请求失败时是否应重试的策略。这在处理网络不稳定或暂时性服务器问题时非常有用。 5. **Cookie管理**:...

    HTTPCLIENT

    总结来说,HTTPCLIENT是一个强大的Java HTTP客户端库,与日志框架(如Log4j)结合使用,可以实现详细的请求跟踪和问题排查。同时,它利用Commons Codec库进行数据编码解码,确保数据在网络中的正确传输。理解和掌握...

    HTTPClient

    HttpClient4 – 获取状态码 **1.1 概览** 本节将详细介绍如何使用HttpClient 4.x版本来获取HTTP响应的状态码,并对其进行验证。这对于开发人员来说是一个非常实用的功能,可以帮助快速定位请求是否成功、服务器...

    HttpClient重新封装的HttpClient类

    封装后,我们可以控制实例的生命周期,或者使用`HttpClientFactory`来创建和管理实例,以优化连接池的使用。 2. **请求和响应的缓存**:为了提高性能,我们可以添加缓存机制,对于某些不变的HTTP请求,可以直接返回...

    HttpClient所需jar包(全) httpClient.4.13jar

    这个标签意味着HttpClient库可能遵循Apache的许可协议,允许自由使用、修改和分发代码。 在"HttpClient所需jar包(全)"这个压缩包中,我们通常会找到以下组件: 1. `httpclient-4.13.jar`: 这是HttpClient的核心库...

    httpClient调用wcf

    4. **处理响应**:发送请求后,HttpClient会返回一个`HttpResponse`对象,从中可以获取响应状态码、响应头和响应体。对于WCF服务,响应体通常是XML或JSON格式的数据,需要解析成Java对象。 5. **数据序列化和反序列...

Global site tag (gtag.js) - Google Analytics