Java commons-httpclient如果实现get及post请求

 更新时间:2020年09月17日 10:52:31   作者:贾树丙  
这篇文章主要介绍了Java commons-httpclient如果实现get及post请求,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

PS:这个jar包,在2007年之后就没有更新过了, 是比较老的版本了。追求新的版本 用HttpComponents 比较好

引入的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);
  }

}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • 关于Java的二叉树、红黑树、B+树详解

    关于Java的二叉树、红黑树、B+树详解

    这篇文章主要介绍了关于Java的二叉树、红黑树、B+树详解,能同时具备数组查找快的优点以及链表插入和删除快的优点的数据结构就是树,需要的朋友可以参考下
    2023-05-05
  • JavaBean和Map转换封装类的方法

    JavaBean和Map转换封装类的方法

    下面小编就为大家带来一篇JavaBean和Map转换封装类的方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-10-10
  • Spring Security使用中Preflight请求和跨域问题详解

    Spring Security使用中Preflight请求和跨域问题详解

    这篇文章主要给大家介绍了关于Spring Security使用中Preflight请求和跨域问题的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。
    2017-11-11
  • 详解Thymeleaf的三种循环遍历方式

    详解Thymeleaf的三种循环遍历方式

    Thymeleaf 是一款用于渲染 XML/XHTML/HTML5 内容的模板引擎。本文为大家总结了Thymeleaf的三种循环遍历方式,感兴趣的可以跟随小编一起学习一下
    2022-06-06
  • springboot的logback配置源码解读

    springboot的logback配置源码解读

    这篇文章主要为大家介绍了springboot的logback配置,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-11-11
  • 基于java下载中getContentLength()一直为-1的一些思路

    基于java下载中getContentLength()一直为-1的一些思路

    下面小编就为大家带来一篇基于java下载中getContentLength()一直为-1的一些思路。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-06-06
  • Java response响应体和文件下载实现原理

    Java response响应体和文件下载实现原理

    这篇文章主要介绍了Java response响应体和文件下载实现原理,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-05-05
  • ZooKeeper命令及JavaAPI操作代码

    ZooKeeper命令及JavaAPI操作代码

    ZooKeeper是一个树形目录服务,其数据模型和Uiix的文件目录树很类似,拥有一个层次化结构,这篇文章主要介绍了ZooKeeper命令及JavaAPI操作代码,需要的朋友可以参考下
    2023-03-03
  • mybatis plus中如何编写sql语句

    mybatis plus中如何编写sql语句

    这篇文章主要介绍了mybatis plus中如何编写sql语句,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-11-11
  • Springboot如何获取上下文ApplicationContext

    Springboot如何获取上下文ApplicationContext

    这篇文章主要介绍了Springboot如何获取上下文ApplicationContext,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-11-11

最新评论