文档章节

httpClient 3.1 工具类

globalHawk
 globalHawk
发布于 2017/06/01 11:21
字数 402
阅读 67
收藏 3

1. maven 依赖

 

 <dependency>
            <groupId>commons-httpclient</groupId>
            <artifactId>commons-httpclient</artifactId>
            <version>3.1</version>
  </dependency>

 

2. 工具类代码

 

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Map;

import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpMethod;
import org.apache.commons.httpclient.HttpStatus;
import org.apache.commons.httpclient.URIException;
import org.apache.commons.httpclient.methods.GetMethod;
import org.apache.commons.httpclient.methods.PostMethod;
import org.apache.commons.httpclient.params.HttpMethodParams;
import org.apache.commons.httpclient.util.URIUtil;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;


public class HttpClientUtils {
    
    private static final Logger logger = LoggerFactory.getLogger(HttpClientUtils.class);
    
    public static String getResFromGetRequestUrl(String url) {
        String res = HttpClientUtils.doGet(url, null, "UTF-8", false);
        return res;
    }

    public static String doGet(String url, String queryString, String charset, boolean pretty) {
        StringBuffer response = new StringBuffer();
        HttpClient client = new HttpClient();
        HttpMethod method = new GetMethod(url);
        try {
            if (StringUtils.isNotBlank(queryString))
                // 对get请求参数做了http请求默认编码,好像没有任何问题,汉字编码后,就成为%式样的字符串
                method.setQueryString(URIUtil.encodeQuery(queryString));
            client.executeMethod(method);
            if (method.getStatusCode() == HttpStatus.SC_OK) {
                BufferedReader reader = new BufferedReader(
                        new InputStreamReader(method.getResponseBodyAsStream(), charset));
                String line;
                while ((line = reader.readLine()) != null) {
                    if (pretty)
                        response.append(line).append(System.getProperty("line.separator"));
                    else
                        response.append(line);
                }
                reader.close();
            }
        } catch (URIException e) {
            logger.error("执行HTTP Get请求时,编码查询字符串“" + queryString + "”发生异常!", e);
        } catch (IOException e) {
            logger.error("执行HTTP Get请求" + url + "时,发生异常!", e);
        } finally {
            method.releaseConnection();
        }
        return response.toString();
    }
    
    
    
     /**  
     * 执行一个HTTP POST请求,返回请求响应的HTML  
     *  
     * @param url         请求的URL地址  
     * @param params    请求的查询参数,可以为null  
     * @param charset 字符集  
     * @param pretty    是否美化  
     * @return 返回请求响应的HTML  
     */   
    public static String doPost(String url, Map<String, String> params, String charset, boolean pretty) {   
            StringBuffer response = new StringBuffer();   
            HttpClient client = new HttpClient();   
            PostMethod method = new PostMethod(url);   
    //设置参数的字符集  
        method.getParams().setParameter(HttpMethodParams.HTTP_CONTENT_CHARSET,charset);  
            //设置Http Post数据   
            if (params != null) {   
                    //HttpMethodParams p = new HttpMethodParams();   
                    for (Map.Entry<String, String> entry : params.entrySet()) {   
                            //p.setParameter(entry.getKey(), entry.getValue());  
                            method.setParameter(entry.getKey(), entry.getValue());  
                    }   
                    //method.setParams(p);   
            }   
            try {   
                    client.executeMethod(method);   
                    if (method.getStatusCode() == HttpStatus.SC_OK) {   
                            BufferedReader reader = new BufferedReader(new InputStreamReader(method.getResponseBodyAsStream(), charset));   
                            String line;   
                            while ((line = reader.readLine()) != null) {   
                                    if (pretty)   
                                            response.append(line).append(System.getProperty("line.separator"));   
                                    else   
                                            response.append(line);   
                            }   
                            reader.close();   
                    }   
            } catch (IOException e) {   
                logger.error("执行HTTP Post请求" + url + "时,发生异常!", e);   
            } finally {   
                    method.releaseConnection();   
            }   
            return response.toString();   
    }   
}
 

© 著作权归作者所有

共有 人打赏支持
globalHawk
粉丝 0
博文 39
码字总数 11446
作品 0
南阳
程序员
私信 提问
使用单例模式实现自己的HttpClient工具类

引子 在Android开发中我们经常会用到网络连接功能与服务器进行数据的交互,为此Android的SDK提供了Apache的HttpClient来方便我们使用各种Http服务。你可以把HttpClient想象成一个浏览器,通过...

moz1q1
2015/04/01
0
0
Android 浅谈HttpClient工具类

在Android开发中我们经常会用到网络连接功能与服务器进行数据的交互,为此Android的SDK提供了Apache的HttpClient来方便我们使用各种Http服务。你可以把HttpClient想象成一个浏览器,通过它的...

Jonson
2013/07/25
0
3
Asp.Net Core 轻松学-HttpClient的演进和避坑

前言     在 Asp.Net Core 1.0 时代,由于设计上的问题, HttpClient 给开发者带来了无尽的困扰,用 Asp.Net Core 开发团队的话来说就是:我们注意到,HttpClient 被很多开发人员不正确的...

Ron.liang
2018/12/08
0
0
HttpClient_4 用法 由HttpClient_3 升级到 HttpClient_4 必看

HttpClient程序包是一个实现了 HTTP 协议的客户端编程工具包,要想熟练的掌握它,必须熟悉 HTTP协议。一个最简单的调用如下:

落落的月
2012/05/11
0
0
用httpclient发soap请求时,怎么去掉返回报文体中的MIME_Boundary

我用httpclient发送soap请求,代码大致如下: 能正常拿到response, 但 返回的body是这样的: --MIME_Boundary Content-ID: 0.urn:uuid:3AF7F988BAC52442C81313043948249@apache.org Content-......

lping
2011/08/11
4.6K
5

没有更多内容

加载失败,请刷新页面

加载更多

多表查询

第1章 多表关系实战 1.1 实战1:省和市  方案1:多张表,一对多  方案2:一张表,自关联一对多 1.2 实战2:用户和角色 (比如演员和扮演人物)  多对多关系 1.3 实战3:角色和权限 (比如...

stars永恒
今天
7
0
求推广,德邦快递坑人!!!!

完全没想好怎么来吐槽自己这次苦逼的德邦物流过程了,只好来记一个流水账。 从寄快递开始: 2019年1月15日从 德邦物流 微信小app上下单,截图如下: 可笑的是什么,我预约的是17号上门收件,...

o0无忧亦无怖
昨天
7
0
Mac Vim配置

1.升级 vim   我自己 MacBook Pro 的系统还是 10.11 ,其自带的 vim 版本为 7.3 ,我们将其升至最新版: 使用 homebrew : brew install vim --with-lua --with-override-system-vim 这将下...

Pasenger
昨天
8
0
vmware安装Ubuntu上不了网?上网了安装不了net-tools,无法执行ifconfig?

1.重新设置网络适配器还是不行,如下指定nat 2.还需要指定共享网络,我是在无线环境下 3.无法执行ifconfig https://packages.ubuntu.com/bionic/net-tools到这个网站下载net-tools的deb文件...

noob_chr
昨天
4
0
解决SVN:E210007无法协商认证机制

svn:E210007 svn: Cannot negotiate authentication mechanism 执行下面代码即可 sudo yum install cyrus-sasl cyrus-sasl-plain cyrus-sasl-ldap...

临江仙卜算子
昨天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部