之前做过一个3版本HttpClient简单示例的示例,最近下了一个4.2.5版本的,做了一个简单的示例如下:
package com.xiva.common.util; import java.io.UnsupportedEncodingException; import java.net.URI; import java.net.URISyntaxException; import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.Map.Entry; import org.apache.http.HttpHost; import org.apache.http.HttpResponse; import org.apache.http.NameValuePair; 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.client.utils.URIBuilder; import org.apache.http.conn.params.ConnRouteParams; import org.apache.http.impl.client.DefaultConnectionKeepAliveStrategy; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.message.BasicNameValuePair; import org.apache.http.params.CoreConnectionPNames; import org.apache.http.protocol.HttpContext; import com.xiva.common.IvExceptionCode; import com.xiva.common.bo.IvResponse; import com.xiva.exception.IvMsgException; /** * * HttpClient 服务类 * 主要负责发送http请求 * @author xiva * @version [版本号, 2013-4-30] * @see [相关类/方法] * @since [产品、模块版本] */ public class HttpClientService { private HttpClient httpClient; private HttpClientService() { httpClient = new DefaultHttpClient(); if(httpClient instanceof DefaultHttpClient) { ((DefaultHttpClient) httpClient).setKeepAliveStrategy(new DefaultConnectionKeepAliveStrategy() { @Override public long getKeepAliveDuration( HttpResponse response, HttpContext context) { long keepAlive = super.getKeepAliveDuration(response, context); if (keepAlive == -1) { keepAlive = 5000;// 会话保持时长 } return keepAlive; } }); } } public static HttpClientService getInstance(boolean useHttps) { HttpClientService service = new HttpClientService(); if (useHttps) { service.useHttpsRequest(); } service.setTimeout(); return service; } private void useHttpsRequest() { } private void setTimeout() { int timeout = 3000; // 单位毫秒 httpClient.getParams().setIntParameter(CoreConnectionPNames.CONNECTION_TIMEOUT, timeout); } public void useProxy(String hostName, int port) { HttpHost proxy = new HttpHost(hostName, port, "http"); httpClient.getParams().setParameter(ConnRouteParams.DEFAULT_PROXY, proxy); } public IvResponse httpGetRequest(String url, Map<String, String> params) { IvResponse ivResponse = new IvResponse(); URIBuilder builder = new URIBuilder(); builder.setPath(url); URI uri = null; try { if (params != null && params.size() > 0) { for (Entry<String, String> entry :params.entrySet()) { builder.setParameter(entry.getKey(), entry.getValue()); } } uri = builder.build(); } catch (URISyntaxException e1) { throw new IvMsgException(IvExceptionCode.SYS_ERROR); } HttpGet httpGet = new HttpGet(uri); HttpResponse httpRes = null; try { httpRes = httpClient.execute(httpGet); ivResponse.setHttpRes(httpRes); } catch (Exception e) { throw new IvMsgException(IvExceptionCode.SYS_ERROR); } return ivResponse; } public IvResponse httpPostRequest(String url, Map<String, String> params) { IvResponse ivResponse = new IvResponse(); HttpPost httpPost = new HttpPost(url); if (params != null && params.size() > 0) { List<NameValuePair> formparams = new ArrayList<NameValuePair>(); for (Entry<String, String> entry :params.entrySet()) { formparams.add(new BasicNameValuePair(entry.getKey(), entry.getValue())); } try { UrlEncodedFormEntity entity = new UrlEncodedFormEntity(formparams, "UTF-8"); httpPost.setEntity(entity); } catch (UnsupportedEncodingException e) { throw new IvMsgException(IvExceptionCode.SYS_ERROR); } } HttpResponse httpRes = null; try { httpRes = httpClient.execute(httpPost); ivResponse.setHttpRes(httpRes); } catch (Exception e) { throw new IvMsgException(IvExceptionCode.SYS_ERROR); } return ivResponse; } }
这个版本与之前3的版本相比较,多了Fluent和Cache功能。
相关推荐
本文将深入探讨HttpClient的使用方法,并通过一个简单的示例来说明。 首先,我们了解HttpClient的基本用法。在Java代码中,我们需要导入HttpClient的相关依赖。如果是Maven项目,可以在pom.xml文件中添加以下依赖:...
4. **发送请求**:通过`HttpClient`对象的`execute(HttpUriRequest request)`方法发送请求,返回`HttpResponse`对象。 5. **处理响应**:从`HttpResponse`中获取响应头、状态码和内容,如`getAllHeaders()`、`...
在本示例中,我们假设你正在使用SOAP,因为通常需要发送XML格式的数据到WebService。 1. **导入必要的库**: 包含在压缩包中的jar文件可能是HttpClient库和其他依赖,如`httpclient.jar`, `httpcore.jar`, `...
### Commons HTTPClient4.X 组件应用详解 #### 一、引言 随着互联网技术的发展,越来越多的应用场景需要直接通过HTTP协议访问Web服务器上的资源。传统的做法是使用浏览器或者基于JDK提供的`java.net`包中的类如`...
HttpClient 4的最新帮助文档会详细讲解这些知识点,并可能包含示例代码和故障排查指南,帮助开发者更好地理解和使用这个强大的HTTP客户端库。通过深入学习和实践,可以有效地处理各种HTTP通信需求。
七、API文档与使用示例 Apache Commons HttpClient 3.1的apidocs提供了详细的类和方法文档,帮助开发者理解和使用这个库。例如,你可以通过`GetMethod`实例化并调用`execute()`方法来发送GET请求,通过`HttpPost`...
《Java HttpClient 4详解》 Java HttpClient 4,也称为Apache HttpClient 4,是Apache软件基金会开发的一个HTTP客户端实现库,用于处理与HTTP服务器的交互。这个库在Java编程环境中广泛使用,尤其对于网络请求的...
通过上述代码示例,我们可以看到使用Apache HttpClient 4.x版本进行文件上传的过程。关键在于正确构建`MultipartEntity`对象,以及处理好请求和响应过程中可能出现的各种异常情况。同时,需要注意解决中文乱码等问题...
首先,`httpclient4中文API.pdf`是HttpClient 4.5的中文版API文档,是学习和使用HttpClient的重要参考资料。这个文档通常会包含HttpClient的类结构、接口、方法等详细信息,以及如何使用这些API来构建HTTP请求的示例...
服务器端自己写,本示例为客户端代码,可以解决httpClient4乱码问题,是替代修改源码的最佳写法。
在这个简单的示例中,我们将探讨如何使用HTTPClient进行基本的GET和POST请求。 首先,要使用HTTPClient,你需要在项目中引入相应的依赖。对于Java项目,如果你使用的是Maven,可以在pom.xml文件中添加以下依赖: `...
以下是一个基本的HTTP GET请求示例: ```java HttpClient httpclient = new DefaultHttpClient(); HttpGet httpget = new HttpGet("http://localhost/"); HttpResponse response = httpclient.execute(httpget); ...
这个小例子中提供的项目源码应该包含了上述操作的示例代码,你可以直接导入并运行,以了解HttpClient的具体使用。通过学习和实践,你将能熟练掌握HttpClient在实际项目中的应用,如进行网页抓取、API调用等任务。
4. **执行请求**:通过HttpClient的execute方法发送请求,得到CloseableHttpResponse对象。 5. **处理响应**:检查状态码,获取响应实体。如果是文件下载,可以使用InputStream和OutputStream将响应内容写入本地...
4. **Delete请求**: Delete请求用于删除指定资源。HttpClient提供了`HttpDelete`类来创建这种请求,只需要传入请求的URL即可。 5. **工具类的设计**: 这个工具类可能封装了上述四个方法,为开发者提供便利的API...
本文将深入探讨HTTPClient 4.x的核心特性,并基于提供的"httpclient4.1_examples"示例文件,解析如何使用这个库进行HTTP请求。 首先,HTTPClient 4.x改进了性能和线程安全,使其更适合在多线程环境中运行。它引入了...
Spring Boot 封装 HttpClient 的示例代码 Spring Boot 是一个基于 Java 的框架,用于快速构建生产级别的应用程序,而 HttpClient 则是一个流行的 HTTP 客户端库,用于发送 HTTP 请求。为了使 HttpClient 的使用更加...
在这个示例中,`DefaultHttpClient` 是一个实现 `HttpClient` 接口的具体类,`HttpGet` 用于构建一个GET请求,而 `execute` 方法则用于发送这个请求并接收响应。 **2.2 HTTP请求的构成** 所有HTTP请求都包含一个...
本文将详细介绍如何使用HttpClient来调用WebService接口,并提供一个具体的示例代码来进行解析。 #### 二、HttpClient简介 HttpClient是Apache的一个开源项目,它提供了一套丰富的API用于发送HTTP请求和接收HTTP...