HttpClient可以用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 HTTP 协议最新的版本和建议。在本文中给出了HttpClient基础使用的说明。
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpRequestBase;
import org.apache.http.client.utils.HttpClientUtils;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.protocol.HTTP;
/**
* 本类为HTTP请求相关工具类,在该类中可以处理通用的HTTP各种请求
*
* @author yuanyao
*
*/
@SuppressWarnings({ "rawtypes", "unchecked", "deprecation" })
public class HttpUtil {
private String url = null;
private HttpClient httpClient = null;
private HttpRequestBase request = null;
private HttpResponse response = null;
/**
* HTTP请求类型
*
* @author yuanyao
*
*/
public enum HttpType {
GET("Get"), POST("Post"), HEAD("Head"), PUT("Put"), DELETE("Delete"), OPTIONS(
"Options"), TRACE("Trace"), PATCH("Patch");
private String key;
private HttpType(String key) {
this.key = key;
}
public String getKey() {
return key;
}
}
public HttpUtil(String url) {
this.url = url;
}
/**
* 获取HTTP请求响应内容
*
* @param url
* 请求URL地址
* @param type
* HTTP请求类型
* @param postParams
* 当请求为POST时提供的POST参数
* @return HTTP响应返回内容
* @throws Exception
*/
public String getHttpResponseContent(HttpType type,
Map<String, String> postParams) throws Exception {
HttpEntity entity = getHttpResponseEntity(type, postParams);
String content = "";
if (entity != null) {
InputStream instreams = entity.getContent();
content = convertStreamToString(instreams);
}
close();
return content;
}
/**
* 返回HTTP响应结果实体
*
* @param url
* 请求URL地址
* @param type
* HTTP请求类型
* @param postParams
* 当请求为POST时提供的POST参数
* @return HTTP响应实体
* @throws Exception
*/
private HttpEntity getHttpResponseEntity(HttpType type,
Map<String, String> postParams) throws Exception {
HttpClient client = new DefaultHttpClient();
HttpRequestBase request = getMethod(type, url);
HttpResponse response = client.execute(request);
if (type == HttpType.POST && postParams != null) {
setPostParams(request, postParams);
}
return response.getEntity();
}
private void close() {
if (request != null && !request.isAborted()) {
request.abort();
}
HttpClientUtils.closeQuietly(response);
HttpClientUtils.closeQuietly(httpClient);
}
/**
* 设置POST请求POST参数
*
* @param request
* POST请求
* @param postParams
* POST参数
* @throws Exception
*/
private void setPostParams(HttpRequestBase request,
Map<String, String> postParams) throws Exception {
List<BasicNameValuePair> postData = new ArrayList<BasicNameValuePair>();
for (Map.Entry<String, String> entry : postParams.entrySet()) {
postData.add(new BasicNameValuePair(entry.getKey(), entry
.getValue()));
}
UrlEncodedFormEntity entity = new UrlEncodedFormEntity(postData,
HTTP.UTF_8);
((HttpResponse) request).setEntity(entity);
}
private HttpRequestBase getMethod(HttpType type, String url)
throws Exception {
if (url == null || url.length() <= 0) {
throw new RuntimeException("请提供HTTP请求的URL地址");
}
String className = "org.apache.http.client.methods.Http"
+ type.getKey();
Class clazz = Class.forName(className);
return ((HttpRequestBase) clazz.getConstructor(String.class)
.newInstance(url));
}
/**
* 从输入流中读取数据并装换为字符串输出
*
* @param is
* 输入流
* @return 输入流读取出的字符串
* @throws Exception
*/
private String convertStreamToString(InputStream is) throws Exception {
BufferedReader reader = new BufferedReader(new InputStreamReader(is));
StringBuilder sb = new StringBuilder();
String line = null;
while ((line = reader.readLine()) != null) {
sb.append(line + "\n");
}
is.close();
return sb.toString().trim();
}
public static void main(String[] args) throws Exception {
String url = "http://www.baidu.com";
String jsonString = new HttpUtil(url).getHttpResponseContent(
HttpType.GET, null);
System.out.println("Response String: " + jsonString);
}
}
分享到:
相关推荐
在Java编程中,HttpClient是一个强大的库,用于执行HTTP请求,特别是在需要进行复杂的HTTP操作或大量HTTP请求时。在处理Web应用程序时,有时我们需要保持用户的登录状态,即SESSION状态。这通常涉及到Cookie管理,...
在标题和描述中提到的"Java中Httpclient需要的jar包(httpclient.jar,httpcore.jar及commons-logging.jar)",是使用HttpClient库时必须包含的三个关键依赖文件。 首先,`httpclient.jar`是Apache HttpClient的核心库...
在Java项目中,使用HttpClient可以实现与Web服务器的高效通信。下面将详细介绍这12个jar包的作用及其在HttpClient中的功能: 1. `commons-beanutils-1.8.0.jar`: Apache Commons BeanUtils库提供了对Java Beans属性...
这个样例项目旨在帮助初学者理解如何在Java中使用HttpClient来与Web服务器进行交互。 在JavaHttpProject这个项目中,你可以找到以下关键知识点: 1. **HttpClient的创建**:首先,你需要创建一个HttpClient实例。...
以下是一个使用HttpClient进行异步请求的Java示例: ```java import java.util.concurrent.CountDownLatch; import org.apache.http.HttpResponse; import org.apache.http.client.methods.HttpGet; import org....
Java中的HttpClient是一个强大的HTTP客户端库,常用于与服务器进行数据交互。在本实例中,我们将讲解如何使用HttpClient来传输XML字符串。首先,我们需要确保引入了正确的依赖,包括Apache HttpClient、HttpMime、...
HttpClient是Apache基金会开发的一个Java库,它提供了对HTTP协议的强大支持,使得开发者可以在Java应用程序中方便地进行HTTP通信。在Java项目中使用HttpClient时,为了确保功能的完整性和正确性,通常需要引入一系列...
在Java开发中,有时我们需要与外部服务进行交互,如发送短信、获取数据等,这时就会用到Web Service。本文将详细介绍如何使用HttpClient和XFire这两种不同的库来调用Web Service,特别是针对短信接口的调用。 首先...
在Java中,HttpClient库是一个常用的工具,它使得开发者能够方便地执行GET、POST等HTTP方法,进行Web服务的调用。 WCF是.NET框架的一部分,用于构建面向服务的应用程序。它提供了一种统一的方式,来创建、部署和...
本篇将详细探讨`Java网络通信之HttpClient`的相关知识点,以及如何通过`HttpClientTest`进行实践操作。 首先,让我们了解什么是Apache HttpClient。HttpClient是一个开放源代码的Java库,它允许开发人员执行HTTP和...
这个工具包在Java社区中广泛使用,尤其是在需要与Web服务进行交互或者进行自动化测试时。在这个场景中,我们关注的是两个特定的版本:`java_httpclient-4.2.5.jar` 和 `java_httpcore-4.4.4.jar`。这两个库是Apache ...
代码使用了Apache HttpClient 5.x版本的API,创建一个默认的HttpClient实例,构建一个GET请求,并发送该请求到指定的URL,最后打印出响应内容。需在pom中导入如下jar包: <groupId>org.apache.httpcomponents....
HttpClient是Apache基金会开发的一个Java库,它为Java开发者提供了一种简单且强大的API来执行HTTP请求,无论是GET、POST还是其他HTTP方法。这个库的主要目标是简化与HTTP服务器的交互,使得开发人员能够轻松地创建...
《JAVA中使用HttpClient:commons-httpclient-3.0.jar详解》 在JAVA开发中,进行HTTP请求时,Apache的HttpClient库是一个不可或缺的工具。本文将深入解析`commons-httpclient-3.0.jar`,它是HttpClient的一个重要...
在实际应用中,使用HttpClient进行JSON数据传输可能会涉及更多细节,如连接池管理、重试策略、超时设置等。要深入理解HttpClient的用法,可以参考官方文档或博客(如给出的链接),学习更多高级特性和最佳实践。
本实例将深入探讨如何在Java中使用HttpClient进行网络通信。 首先,你需要在项目中引入HttpClient的相关依赖。如果是Maven项目,可以在pom.xml文件中添加以下依赖: ```xml <groupId>org.apache.httpcomponents ...
同时,注意HttpClient库已经不再更新,对于新的Java项目,推荐使用现代化的HTTP客户端库,如Apache HttpClient的后继者Apache HTTP Components HttpClient 4.x系列,或者使用Java标准库的`java.net.http.HttpClient`...
Java 使用 HttpClient 发送 POST 请求是网络编程中常见的任务,尤其在与 Web 服务进行交互时。Apache HttpClient 是一个强大的库,允许 Java 开发者轻松地执行 HTTP 请求。在这个示例中,我们将深入探讨如何使用 ...
以上就是使用Java HttpClient进行HTTP请求的基本操作。在实际应用中,你可能需要处理更复杂的场景,例如设置超时、处理重定向、管理Cookie等。同时,SpringMVC框架提供了与HttpClient集成的便捷方式,可以更方便地在...
本篇将详细介绍如何使用HttpClient发送HTTP请求,包括POST和GET方法,同时提供相关的jar包依赖以及Java代码示例,并对关键代码进行注解解释。 一、HttpClient库的引入 在Java项目中,首先需要添加HttpClient的jar包...