全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

Java使用HttpClient实现Post请求实例

基于项目需求,想要实现Post消息推送,故采用HttpClient组件进行实现,相关代码如下(注:程序采用的httpclient和httpcore依赖包的版本为4.2.5):

import org.apache.http.Header;
import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.params.CoreConnectionPNames;
import java.util.UUID;
import net.sf.json.JSONObject;
import java.nio.charset.Charset;

public static boolean httpPostWithJson(JSONObject jsonObj,String url,String appId){
  boolean isSuccess = false;
  
  HttpPost post = null;
  try {
    HttpClient httpClient = new DefaultHttpClient();

    // 设置超时时间
    httpClient.getParams().setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT, 2000);
    httpClient.getParams().setParameter(CoreConnectionPNames.SO_TIMEOUT, 2000);
      
    post = new HttpPost(url);
    // 构造消息头
    post.setHeader("Content-type", "application/json; charset=utf-8");
    post.setHeader("Connection", "Close");
    String sessionId = getSessionId();
    post.setHeader("SessionId", sessionId);
    post.setHeader("appid", appid);
          
    // 构建消息实体
    StringEntity entity = new StringEntity(jsonObj.toString(), Charset.forName("UTF-8"));
    entity.setContentEncoding("UTF-8");
    // 发送Json格式的数据请求
    entity.setContentType("application/json");
    post.setEntity(entity);
      
    HttpResponse response = httpClient.execute(post);
      
    // 检验返回码
    int statusCode = response.getStatusLine().getStatusCode();
    if(statusCode != HttpStatus.SC_OK){
      LogUtil.info("请求出错: "+statusCode);
      isSuccess = false;
    }else{
      int retCode = 0;
      String sessendId = "";
      // 返回码中包含retCode及会话Id
      for(Header header : response.getAllHeaders()){
        if(header.getName().equals("retcode")){
          retCode = Integer.parseInt(header.getValue());
        }
        if(header.getName().equals("SessionId")){
          sessendId = header.getValue();
        }
      }
      
      if(ErrorCodeHelper.IAS_SUCCESS != retCode ){
        // 日志打印
        LogUtil.info("error return code, sessionId: "sessendId"\t"+"retCode: "+retCode);
        isSuccess = false;
      }else{
        isSuccess = true;
      }
    }
  } catch (Exception e) {
    e.printStackTrace();
    isSuccess = false;
  }finally{
    if(post != null){
      try {
        post.releaseConnection();
        Thread.sleep(500);
      } catch (InterruptedException e) {
        e.printStackTrace();
      }
    }
  }
  return isSuccess;
}

// 构建唯一会话Id
public static String getSessionId(){
  UUID uuid = UUID.randomUUID();
  String str = uuid.toString();
  return str.substring(0, 8) + str.substring(9, 13) + str.substring(14, 18) + str.substring(19, 23) + str.substring(24);
}

Ps: 在使用Hadoop集群进行发送POST请求时,遇到"java.lang.NoSuchFieldError: INSTANCE"的问题,此类问题一般是"jar包冲突"的问题所致,但奇怪的是本地的pom.xml设置的依赖包中有该字段,相关的httpclient依赖包如下:  

<dependency>
  <groupId>org.apache.httpcomponents</groupId>
  <artifactId>httpclient</artifactId>
  <version>4.4.1</version>
</dependency>
<dependency>
  <groupId>org.apache.httpcomponents</groupId>
  <artifactId>httpcore</artifactId>
  <version>4.4.1</version>
</dependency>  

随后在网上查找了一翻,找到问题的缘由,原因在于Hadoop集群运行程序时,首先会加载自己相关目录下的jar包,在自己目录下如果未找到,才会加载程序运行时指定的jar包,随查找了Hadoop集群中相关Jar包路径,发现httpclient的相关依赖包为4.2.5,因此将pom.xml配置文件也更新为该版本,程序则运行通过.

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


# httpclient  # post请求  # httpclient的post请求  # java  # client  # java使用httpclient 发送请求的示例  # java 11新特性HttpClient主要组件及发送请求示例详解  # Java通过HttpClient进行HTTP请求的代码详解  # java中httpclient封装post请求和get的请求实例  # Java commons-httpclient如果实现get及post请求  # JAVA通过HttpClient发送HTTP请求的方法示例  # java实现HttpClient异步请求资源的方法  # Java高并发场景下的 HttpClient请求优化实现  # 找了  # 的是  # 加载  # 目录下  # 才会  # 中有  # 此类  # 配置文件  # 大家多多  # 为该  # 未找到  # 在网上  # false  # isSuccess  # post  # getParams  # setParameter  # null 


相关文章: 如何在IIS中新建站点并配置端口与IP地址?  php json中文编码为null的解决办法  非常酷的网站设计制作软件,酷培ai教育官方网站?  天河区网站制作公司,广州天河区如何办理身份证?需要什么资料有预约的网站吗?  建站之星Pro快速搭建教程:模板选择与功能配置指南  如何快速搭建二级域名独立网站?  免费视频制作网站,更新又快又好的免费电影网站?  广州顶尖建站服务:企业官网建设与SEO优化一体化方案  建站之星IIS配置教程:代码生成技巧与站点搭建指南  北京建设网站制作公司,北京古代建筑博物馆预约官网?  如何构建满足综合性能需求的优质建站方案?  平台云上自助建站如何快速打造专业网站?  单页制作网站有哪些,朋友给我发了一个单页网站,我应该怎么修改才能把他变成自己的呢,请求高手指点迷津?  一键制作网站软件下载安装,一键自动采集网页文档制作步骤?  电商网站制作多少钱一个,电子商务公司的网站制作费用计入什么科目?  如何在云主机上快速搭建网站?  如何在Windows环境下新建FTP站点并设置权限?  定制建站方案优化指南:企业官网开发与建站费用解析  在线制作视频的网站有哪些,电脑如何制作视频短片?  网站视频怎么制作,哪个网站可以免费收看好莱坞经典大片?  ,想在网上投简历,哪几个网站比较好?  定制建站模板如何实现SEO优化与智能系统配置?18字教程  香港服务器租用每月最低只需15元?  高端建站如何打造兼具美学与转化的品牌官网?  建站之星在线版空间:自助建站+智能模板一键生成方案  如何在阿里云虚拟机上搭建网站?步骤解析与避坑指南  宿州网站制作公司兴策,安徽省低保查询网站?  已有域名如何快速搭建专属网站?  建站OpenVZ教程与优化策略:配置指南与性能提升  建站之星后台密码遗忘如何找回?  杭州银行网站设计制作流程,杭州银行怎么开通认证方式?  邀请函制作网站有哪些,有没有做年会邀请函的网站啊?在线制作,模板很多的那种?  相册网站制作软件,图片上的网址怎么复制?  小型网站制作HTML,*游戏网站怎么搭建?  在线流程图制作网站手机版,谁能推荐几个好的CG原画资源网站么?  如何用狗爹虚拟主机快速搭建网站?  如何在阿里云ECS服务器部署织梦CMS网站?  宠物网站制作html代码,有没有专门介绍宠物如何养的网站啊?  大同网页,大同瑞慈医院官网?  用v-html解决Vue.js渲染中html标签不被解析的问题  建站之星伪静态规则如何正确配置?  专业网站制作企业网站,如何制作一个企业网站,建设网站的基本步骤有哪些?  北京网站制作公司哪家好一点,北京租房网站有哪些?  如何设置并定期更换建站之星安全管理员密码?  C#如何在一个XML文件中查找并替换文本内容  郑州企业网站制作公司,郑州招聘网站有哪些?  网站网页制作电话怎么打,怎样安装和使用钉钉软件免费打电话?  如何快速生成凡客建站的专业级图册?  建站之星五站合一营销型网站搭建攻略,流量入口全覆盖优化指南  建站主机选哪种环境更利于SEO优化? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。