文档章节

httpClient 3.1 工具类

globalHawk
 globalHawk
发布于 2017/06/01 11:21
字数 402
阅读 50
收藏 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
HttpClient_4 用法 由HttpClient_3 升级到 HttpClient_4 必看

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

落落的月
2012/05/11
0
0
爬虫--[HttpClient]

爬虫技术可以获取互联网上开放的网页文档或其他文档,在java中HttpClient是比较好用的模拟请求和爬虫组件 下面看一个简单的职位爬去的实例: 1 下载HttpClient 最新HttpClient版本是4.x,我们...

Candy_Desire
2014/11/06
0
0
Android 浅谈HttpClient工具类

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

Jonson
2013/07/25
0
3
HttpClient不保存、发送Cookie

问题: 使HttpClient(commons-httpclient:3.1)不保存和发送Cookie,即每次请求都相互独立。 解决: 方法1:客户端(HttpClient)添加cookie策略 httpClient.getParams().setCookiePolicy(Coo...

zetaplusae
2013/07/12
0
1

没有更多内容

加载失败,请刷新页面

加载更多

android webrtc使用opensl es

1. java层开启开关 peerConnectionParameters = new PeerConnectionClient.PeerConnectionParameters(); 接口中的useOpensles参数设置为true 2. /system/etc/permissions/下新增and......

bill_shen
23分钟前
0
0
读《高性能mysql》记录

1 2

李佳顺
24分钟前
0
0
Element UI框架+Vue开发搭建示例

一、关于Element 1.Element,一套为开发者、设计师和产品经理准备的基于 Vue 2.0 的桌面端组件库,官方网址:http://element-cn.eleme.io/#/zh-CN 2.Element UI 是饿了么前端团队倾情打造htt...

tianma3798
26分钟前
2
0
Fragment整理

1、Fragment父类 Fragment的父类有两个,分别为android.app.Fragment和android.support.v4.app.Fragment。建议使用android.support.v4.app.Fragment。因为此Fragment在所有的android版本中可...

西米小娅
32分钟前
0
0
mysql报错:所选列未在GROUP BY子句中 的解决方法(laravel框架)

数据库配置文件database.php文件的 'mysql' => [ 'strict' => false] strict改为false,应该是开启宽松模式,就不会报错了...

郭周园
36分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部