`
xiang37
  • 浏览: 429539 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

HttpClient4示例

 
阅读更多

 之前做过一个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的使用方法,并通过一个简单的示例来说明。 首先,我们了解HttpClient的基本用法。在Java代码中,我们需要导入HttpClient的相关依赖。如果是Maven项目,可以在pom.xml文件中添加以下依赖:...

    HttpClient使用示例教程

    4. **发送请求**:通过`HttpClient`对象的`execute(HttpUriRequest request)`方法发送请求,返回`HttpResponse`对象。 5. **处理响应**:从`HttpResponse`中获取响应头、状态码和内容,如`getAllHeaders()`、`...

    HttpClient 调用WebService示例

    在本示例中,我们假设你正在使用SOAP,因为通常需要发送XML格式的数据到WebService。 1. **导入必要的库**: 包含在压缩包中的jar文件可能是HttpClient库和其他依赖,如`httpclient.jar`, `httpcore.jar`, `...

    Commons HTTPClient4&#46;X组件应用示例

    ### Commons HTTPClient4.X 组件应用详解 #### 一、引言 随着互联网技术的发展,越来越多的应用场景需要直接通过HTTP协议访问Web服务器上的资源。传统的做法是使用浏览器或者基于JDK提供的`java.net`包中的类如`...

    httpClient4 最新帮助文档

    HttpClient 4的最新帮助文档会详细讲解这些知识点,并可能包含示例代码和故障排查指南,帮助开发者更好地理解和使用这个强大的HTTP客户端库。通过深入学习和实践,可以有效地处理各种HTTP通信需求。

    commons-httpclient-3.1 java API详细index格式文档

    七、API文档与使用示例 Apache Commons HttpClient 3.1的apidocs提供了详细的类和方法文档,帮助开发者理解和使用这个库。例如,你可以通过`GetMethod`实例化并调用`execute()`方法来发送GET请求,通过`HttpPost`...

    httpclient4

    《Java HttpClient 4详解》 Java HttpClient 4,也称为Apache HttpClient 4,是Apache软件基金会开发的一个HTTP客户端实现库,用于处理与HTTP服务器的交互。这个库在Java编程环境中广泛使用,尤其对于网络请求的...

    HttpClient 4文件上传

    通过上述代码示例,我们可以看到使用Apache HttpClient 4.x版本进行文件上传的过程。关键在于正确构建`MultipartEntity`对象,以及处理好请求和响应过程中可能出现的各种异常情况。同时,需要注意解决中文乱码等问题...

    httpclient4中文API和使用

    首先,`httpclient4中文API.pdf`是HttpClient 4.5的中文版API文档,是学习和使用HttpClient的重要参考资料。这个文档通常会包含HttpClient的类结构、接口、方法等详细信息,以及如何使用这些API来构建HTTP请求的示例...

    httpclient4上传文件中文乱码问题解决办法代码示例

    服务器端自己写,本示例为客户端代码,可以解决httpClient4乱码问题,是替代修改源码的最佳写法。

    httpclient简单示例

    在这个简单的示例中,我们将探讨如何使用HTTPClient进行基本的GET和POST请求。 首先,要使用HTTPClient,你需要在项目中引入相应的依赖。对于Java项目,如果你使用的是Maven,可以在pom.xml文件中添加以下依赖: `...

    httpclient4中文教程.doc

    以下是一个基本的HTTP GET请求示例: ```java HttpClient httpclient = new DefaultHttpClient(); HttpGet httpget = new HttpGet("http://localhost/"); HttpResponse response = httpclient.execute(httpget); ...

    HttpClient的小例子

    这个小例子中提供的项目源码应该包含了上述操作的示例代码,你可以直接导入并运行,以了解HttpClient的具体使用。通过学习和实践,你将能熟练掌握HttpClient在实际项目中的应用,如进行网页抓取、API调用等任务。

    httpClient

    4. **执行请求**:通过HttpClient的execute方法发送请求,得到CloseableHttpResponse对象。 5. **处理响应**:检查状态码,获取响应实体。如果是文件下载,可以使用InputStream和OutputStream将响应内容写入本地...

    HttpClient接口调用工具类(附带demo)

    4. **Delete请求**: Delete请求用于删除指定资源。HttpClient提供了`HttpDelete`类来创建这种请求,只需要传入请求的URL即可。 5. **工具类的设计**: 这个工具类可能封装了上述四个方法,为开发者提供便利的API...

    httpclient4.x官方范例

    本文将深入探讨HTTPClient 4.x的核心特性,并基于提供的"httpclient4.1_examples"示例文件,解析如何使用这个库进行HTTP请求。 首先,HTTPClient 4.x改进了性能和线程安全,使其更适合在多线程环境中运行。它引入了...

    spring boot封装HttpClient的示例代码

    Spring Boot 封装 HttpClient 的示例代码 Spring Boot 是一个基于 Java 的框架,用于快速构建生产级别的应用程序,而 HttpClient 则是一个流行的 HTTP 客户端库,用于发送 HTTP 请求。为了使 HttpClient 的使用更加...

    HttpClient 4 官方教程中文翻译版

    在这个示例中,`DefaultHttpClient` 是一个实现 `HttpClient` 接口的具体类,`HttpGet` 用于构建一个GET请求,而 `execute` 方法则用于发送这个请求并接收响应。 **2.2 HTTP请求的构成** 所有HTTP请求都包含一个...

    httpClient调用webservice接口

    本文将详细介绍如何使用HttpClient来调用WebService接口,并提供一个具体的示例代码来进行解析。 #### 二、HttpClient简介 HttpClient是Apache的一个开源项目,它提供了一套丰富的API用于发送HTTP请求和接收HTTP...

Global site tag (gtag.js) - Google Analytics