引入的jar包为:

<!-- https://mvnrepository.com/artifact/commons-httpclient/commons-httpclient -->
<dependency>
    <groupId>commons-httpclient</groupId>
    <artifactId>commons-httpclient</artifactId>
    <version>3.1</version>
</dependency>

具体实现类为:

import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.methods.GetMethod;
import org.apache.commons.httpclient.methods.PostMethod;
import org.apache.commons.httpclient.methods.RequestEntity;
import org.apache.commons.httpclient.methods.StringRequestEntity;
import org.apache.commons.httpclient.params.HttpMethodParams;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.io.IOException;

public class HttpClientHelper {
    private static Logger logger = LoggerFactory.getLogger(HttpClientHelper.class);

    private HttpClientHelper() {

    }

    /**
     * 发起POST请求
     *
     * @param url       url
     * @param paramJson 参数的json格式
     */
    public static String sendPost(String url, String paramJson) {
        logger.info("开始发起POST请求,请求地址为{},参数为{}", url, paramJson);

        // 创建httpClient实例对象
        HttpClient httpClient = new HttpClient();
        // 设置httpClient连接主机服务器超时时间:15000毫秒
        httpClient.getHttpConnectionManager().getParams().setConnectionTimeout(15000);
        // 创建post请求方法实例对象
        PostMethod postMethod = new PostMethod(url);
        // 设置post请求超时时间
        postMethod.getParams().setParameter(HttpMethodParams.SO_TIMEOUT, 60000);
        postMethod.addRequestHeader("Content-Type", "application/json");
        try {
            //json格式的参数解析
            RequestEntity entity = new StringRequestEntity(paramJson, "application/json", "UTF-8");
            postMethod.setRequestEntity(entity);

            httpClient.executeMethod(postMethod);
            String result = postMethod.getResponseBodyAsString();
            postMethod.releaseConnection();
            return result;
        } catch (IOException e) {
            logger.error("POST请求发出失败,请求的地址为{},参数为{},错误信息为{}", url, paramJson, e.getMessage(), e);
        }
        return null;
    }

    /**
     * 发起GET请求
     *
     * @param urlParam url请求,包含参数
     */
    public static String sendGet(String urlParam) {
        logger.info("开始发起GET请求,请求地址为{}", urlParam);
        // 创建httpClient实例对象
        HttpClient httpClient = new HttpClient();
        // 设置httpClient连接主机服务器超时时间:15000毫秒
        httpClient.getHttpConnectionManager().getParams().setConnectionTimeout(15000);
        // 创建GET请求方法实例对象
        GetMethod getMethod = new GetMethod(urlParam);
        // 设置post请求超时时间
        getMethod.getParams().setParameter(HttpMethodParams.SO_TIMEOUT, 60000);
        getMethod.addRequestHeader("Content-Type", "application/json");
        try {
            httpClient.executeMethod(getMethod);
            String result = getMethod.getResponseBodyAsString();
            getMethod.releaseConnection();
            logger.info("返回信息为{}", result);
            return result;
        } catch (IOException e) {
            logger.error("GET请求发出失败,请求的地址为{},错误信息为{}", urlParam, e.getMessage(), e);
        }
        return null;
    }

    public static void main(String[] args) {
        String url = "https://jiashubing.cn/tencenttest";
        String param = "{\"aaa\":\"bbbbbbb\"}";
        sendPost(url, param);
        String urlParam = "https://jiashubing.cn/talk/document?fileid=1234";
        sendGet(urlParam);
    }

}

最新文章

  1. 使用 python 获取 Linux 的 IP 信息(通过 ifconfig 命令)
  2. Mysql的视图、存储过程、函数、索引全解析
  3. 什么是SCADA Viewer
  4. 【Swift学习】Swift编程之旅---属性(十四)
  5. python 杨辉三角
  6. [麦先生]初学Laravel框架与ThinkPHP的不同(1)
  7. 一些站点使用的服务器软件、js 框架大收集 [ 整理中 ]
  8. Problem W UVA 662 二十三 Fast Food
  9. 【转】selenium及webdriver的原理
  10. How To Read a Paper.md
  11. 【转载】nginx 并发数问题思考:worker_connections,worker_processes与 max clients
  12. linux下MongoDB客户端shell基本操作
  13. 关于Jaccard相似度在竞品分析中的一点思考
  14. Django中数据库表的关联与创建(语言:python)
  15. PWD的编译及调试
  16. day25 Python __setattr__
  17. Nginx+Django搭建
  18. 【Java POI】1、Java POI的使用
  19. centos7和centos6.5环境rpm方式安装mysql5.7和mysql5.6详解
  20. e739. 创建一个标签组件

热门文章

  1. .NET移动开发,关于发布IOS的方法(本人亲身经历折腾很久终于成功)
  2. EF 外键不显示、如何让外键显示!增、删、改 操作时,外键不显示,只显示导航属性!
  3. [TCP/IP] 传输层-ethereal 抓包分析TCP包
  4. oracle学习笔记(六) JDBC使用
  5. mysql命令行导入导出数据库
  6. 折腾Java设计模式之状态模式
  7. python3 Flask -day2
  8. Java实现&quot;命令式&quot;简易文本编辑器原型
  9. git常用命令总结--廖雪峰老师Git教程命令总结
  10. 如何禁止chrome浏览器http自动转成https 【转】