详见: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;
}
}
分享到:
相关推荐
本教程将介绍HttpClient的基本概念和使用方法。 首先,HttpClient的核心功能是执行HTTP请求。通过创建HttpClient实例和指定的HTTP方法对象(如HttpGet、HttpPost等),可以向目标服务器发起请求并获取响应。以下是...
在描述中提到的“httpclient4”,指的是HttpClient 4.x系列,这是一个稳定且广泛使用的版本。 在HttpClient 4.4.1.jar中,包含了HttpClient的主要功能实现,如HTTP方法(GET, POST等)、连接管理、重定向处理、身份...
本篇文章将详细探讨如何使用HttpClient来访问Servlet,并阐述相关的核心知识点。 首先,我们需要理解Servlet的本质。Servlet是一种Java类,它扩展了服务器的功能,用于处理HTTP请求并生成响应。通常,Servlet部署在...
在较旧的Android版本中,我们可以使用`DefaultHttpClient`,但在新版本中,由于HttpClient已被弃用,建议使用其他替代方案,如OkHttp或Retrofit。 3. **创建HttpPost对象**:根据需要上传文件的URL创建一个`...
这样确保了在整个应用程序生命周期中,HttpClientHelper只有一个实例被创建和使用。 5. **异常处理**:HttpClientHelper 应该包含了适当的错误处理机制,如捕获网络异常、解析异常等,以确保在出现问题时能够给出...
4. **设置SOAP请求体**: 使用`StringEntity`或`HttpEntityEnclosingRequestBase`来设置SOAP请求体。这通常涉及到将SOAP XML转换为字符串并添加到请求中: ```java String soapRequestBody = ...
然而,由于这个例程使用了HttpClient,我们需要了解其工作原理和如何在Android环境中正确使用。 7. **注意事项**: - 异步处理:网络请求不应在主线程中进行,以免阻塞用户界面,应使用异步任务或Android的...
本文将深入探讨如何使用Java中的HttpClient4库来实现对新浪和腾讯微博的模拟登录。HttpClient4是一个强大的HTTP客户端库,它允许开发者执行HTTP请求并处理响应,非常适合进行网页交互。 首先,我们来看`Sina.java`...
- **创建HttpClient实例**:首先,我们需要创建一个HttpClient对象,例如使用`HttpClientBuilder`或`HttpClients.createDefault()`方法。 - **构建HttpGet请求**:使用`HttpGet`类创建一个HTTP GET请求,指定要...
在Java项目中,使用HttpClient可以实现与Web服务器的高效通信。下面将详细介绍这12个jar包的作用及其在HttpClient中的功能: 1. `commons-beanutils-1.8.0.jar`: Apache Commons BeanUtils库提供了对Java Beans属性...
在描述中提到的博客链接(由于实际无法访问,这里将根据一般HttpClient的使用情况来解释)可能包含了一些关于如何使用HttpClient的实际示例或常见问题解答。通常,这些内容会涵盖如何初始化HttpClient实例,构建请求...
4. 执行请求:使用HttpClient的execute方法发送请求,返回HttpResponse对象。 5. 处理响应:获取HttpResponse的状态码、头部信息,并通过HttpEntity获取实体内容。 四、HttpClient的高级特性 1. 连接管理:...
然而,需要注意的是,HttpClient 4.x和5.x版本提供了更多的改进和新特性,比如更好的性能,更现代的HTTP协议支持,以及更好的错误处理机制。因此,在新的项目中,开发者通常会优先考虑使用更新的版本。 在实际使用...
4. **重试处理(Retry Handler)**:HttpClient 提供了`HttpRequestRetryHandler`接口,让你可以自定义当请求失败时是否应重试的策略。这在处理网络不稳定或暂时性服务器问题时非常有用。 5. **Cookie管理**:...
总结来说,HTTPCLIENT是一个强大的Java HTTP客户端库,与日志框架(如Log4j)结合使用,可以实现详细的请求跟踪和问题排查。同时,它利用Commons Codec库进行数据编码解码,确保数据在网络中的正确传输。理解和掌握...
HttpClient4 – 获取状态码 **1.1 概览** 本节将详细介绍如何使用HttpClient 4.x版本来获取HTTP响应的状态码,并对其进行验证。这对于开发人员来说是一个非常实用的功能,可以帮助快速定位请求是否成功、服务器...
封装后,我们可以控制实例的生命周期,或者使用`HttpClientFactory`来创建和管理实例,以优化连接池的使用。 2. **请求和响应的缓存**:为了提高性能,我们可以添加缓存机制,对于某些不变的HTTP请求,可以直接返回...
这个标签意味着HttpClient库可能遵循Apache的许可协议,允许自由使用、修改和分发代码。 在"HttpClient所需jar包(全)"这个压缩包中,我们通常会找到以下组件: 1. `httpclient-4.13.jar`: 这是HttpClient的核心库...
4. **处理响应**:发送请求后,HttpClient会返回一个`HttpResponse`对象,从中可以获取响应状态码、响应头和响应体。对于WCF服务,响应体通常是XML或JSON格式的数据,需要解析成Java对象。 5. **数据序列化和反序列...