HttpClient发送Get和Post请求

来源:互联网 发布:华为 软件版本说明 编辑:程序博客网 时间:2024/05/15 19:21

工具类

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.apache.commons.logging.Log;import org.apache.commons.logging.LogFactory;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.Map;public class HttpTookit {    private static Log log = LogFactory.getLog(HttpTookit.class);    /**     * 执行一个HTTP GET请求,返回请求响应的HTML     *     * @param url                 请求的URL地址     * @param queryString 请求的查询参数,可以为null     * @param charset         字符集     * @param pretty            是否美化     * @return 返回请求响应的HTML     */    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) {            log.error("执行HTTP Get请求时,编码查询字符串“" + queryString + "”发生异常!", e);        } catch (IOException e) {            log.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();        HttpMethod method = new PostMethod(url);        //设置Http Post数据        if (params != null) {            HttpMethodParams p = new HttpMethodParams();            for (Map.Entry<String, String> entry : params.entrySet()) {                p.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) {            log.error("执行HTTP Post请求" + url + "时,发生异常!", e);        } finally {            method.releaseConnection();        }        return response.toString();    }    public static void main(String[] args) {        String y = doGet("http://video.sina.com.cn/life/tips.html", null, "GBK", true);        System.out.println(y);    }}

pom依赖

 <!-- https://mvnrepository.com/artifact/commons-httpclient/commons-httpclient -->        <dependency>            <groupId>commons-httpclient</groupId>            <artifactId>commons-httpclient</artifactId>            <version>3.1</version>        </dependency>        <!-- https://mvnrepository.com/artifact/org.apache.commons/commons-lang3 -->        <dependency>            <groupId>org.apache.commons</groupId>            <artifactId>commons-lang3</artifactId>            <version>3.4</version>        </dependency>        <!-- https://mvnrepository.com/artifact/commons-logging/commons-logging -->        <dependency>            <groupId>commons-logging</groupId>            <artifactId>commons-logging</artifactId>            <version>1.1.1</version>        </dependency>