最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java使用HttpClient實(shí)現(xiàn)Post請(qǐng)求實(shí)例

 更新時(shí)間:2017年02月20日 16:45:52   作者:mengrennwpu  
本篇文章主要介紹了Java使用HttpClient實(shí)現(xiàn)Post請(qǐng)求實(shí)例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧

基于項(xiàng)目需求,想要實(shí)現(xiàn)Post消息推送,故采用HttpClient組件進(jìn)行實(shí)現(xiàn),相關(guān)代碼如下(注:程序采用的httpclient和httpcore依賴(lài)包的版本為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();

    // 設(shè)置超時(shí)時(shí)間
    httpClient.getParams().setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT, 2000);
    httpClient.getParams().setParameter(CoreConnectionPNames.SO_TIMEOUT, 2000);
      
    post = new HttpPost(url);
    // 構(gòu)造消息頭
    post.setHeader("Content-type", "application/json; charset=utf-8");
    post.setHeader("Connection", "Close");
    String sessionId = getSessionId();
    post.setHeader("SessionId", sessionId);
    post.setHeader("appid", appid);
          
    // 構(gòu)建消息實(shí)體
    StringEntity entity = new StringEntity(jsonObj.toString(), Charset.forName("UTF-8"));
    entity.setContentEncoding("UTF-8");
    // 發(fā)送Json格式的數(shù)據(jù)請(qǐng)求
    entity.setContentType("application/json");
    post.setEntity(entity);
      
    HttpResponse response = httpClient.execute(post);
      
    // 檢驗(yàn)返回碼
    int statusCode = response.getStatusLine().getStatusCode();
    if(statusCode != HttpStatus.SC_OK){
      LogUtil.info("請(qǐng)求出錯(cuò): "+statusCode);
      isSuccess = false;
    }else{
      int retCode = 0;
      String sessendId = "";
      // 返回碼中包含retCode及會(huì)話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;
}

// 構(gòu)建唯一會(huì)話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集群進(jìn)行發(fā)送POST請(qǐng)求時(shí),遇到"java.lang.NoSuchFieldError: INSTANCE"的問(wèn)題,此類(lèi)問(wèn)題一般是"jar包沖突"的問(wèn)題所致,但奇怪的是本地的pom.xml設(shè)置的依賴(lài)包中有該字段,相關(guān)的httpclient依賴(lài)包如下:  

<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>  

隨后在網(wǎng)上查找了一翻,找到問(wèn)題的緣由,原因在于Hadoop集群運(yùn)行程序時(shí),首先會(huì)加載自己相關(guān)目錄下的jar包,在自己目錄下如果未找到,才會(huì)加載程序運(yùn)行時(shí)指定的jar包,隨查找了Hadoop集群中相關(guān)Jar包路徑,發(fā)現(xiàn)httpclient的相關(guān)依賴(lài)包為4.2.5,因此將pom.xml配置文件也更新為該版本,程序則運(yùn)行通過(guò).

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 詳解SpringBoot Mybatis如何對(duì)接多數(shù)據(jù)源

    詳解SpringBoot Mybatis如何對(duì)接多數(shù)據(jù)源

    這篇文章主要為大家介紹了SpringBoot Mybatis如何對(duì)接多數(shù)據(jù)源實(shí)現(xiàn)方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-09-09
  • 解決SpringBoot的@DeleteMapping注解的方法不被調(diào)用問(wèn)題

    解決SpringBoot的@DeleteMapping注解的方法不被調(diào)用問(wèn)題

    這篇文章主要介紹了解決SpringBoot的@DeleteMapping注解的方法不被調(diào)用問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • 一篇文章帶你了解spring事務(wù)失效的多種場(chǎng)景

    一篇文章帶你了解spring事務(wù)失效的多種場(chǎng)景

    在日常編碼過(guò)程中常常涉及到事務(wù),在前兩天看到一篇文章提到了Spring事務(wù),那么在此總結(jié)下在Spring環(huán)境下事務(wù)失效的幾種原因.
    2021-09-09
  • 淺談Java內(nèi)存區(qū)域與對(duì)象創(chuàng)建過(guò)程

    淺談Java內(nèi)存區(qū)域與對(duì)象創(chuàng)建過(guò)程

    下面小編就為大家?guī)?lái)一篇淺談Java內(nèi)存區(qū)域與對(duì)象創(chuàng)建過(guò)程。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-07-07
  • Java BigDecimal解決double精度丟失的問(wèn)題

    Java BigDecimal解決double精度丟失的問(wèn)題

    我們?cè)谌粘i_(kāi)發(fā)中, 有很多時(shí)候會(huì)遇到小數(shù)(double類(lèi)型)精確計(jì)算,本文主要介紹了Java BigDecimal解決double精度丟失的問(wèn)題,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-11-11
  • Java JDK8新增Optional工具類(lèi)講解

    Java JDK8新增Optional工具類(lèi)講解

    這篇文章主要介紹了Java JDK8新增Optional工具類(lèi)講解,本文通過(guò)老版和jdk8對(duì)比對(duì)null的處理方式,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • JetBrains?發(fā)布下一代?IDE無(wú)比輕量幾秒就能啟動(dòng)干活

    JetBrains?發(fā)布下一代?IDE無(wú)比輕量幾秒就能啟動(dòng)干活

    雖然?JetBrains?公司說(shuō)?Fleet?的定位和目標(biāo)并不是代替其他?IDE,但個(gè)人覺(jué)得,?如果?Fleet?火起來(lái)了,其他?IDE?就會(huì)黯然失色,特別是多語(yǔ)言開(kāi)發(fā)者,誰(shuí)愿意裝多個(gè)?IDE?呢?到時(shí)候,可能?JetBrains?以后的所有?IDE?要一統(tǒng)江湖了
    2021-12-12
  • idea微服務(wù)項(xiàng)目服務(wù)如何顯示在同一窗口

    idea微服務(wù)項(xiàng)目服務(wù)如何顯示在同一窗口

    本文介紹了如何在微服務(wù)項(xiàng)目導(dǎo)入時(shí)將所有服務(wù)加入同一窗口中,解決啟動(dòng)項(xiàng)目服務(wù)時(shí)顯示不全的問(wèn)題,通過(guò)點(diǎn)擊左上角的View,選擇ToolWindows,然后選擇Services,使用快捷鍵Alt+8,選擇Spring Boot,就可以將所有服務(wù)加到同一窗口中
    2025-02-02
  • 淺析java中 Spring MVC 攔截器作用及其實(shí)現(xiàn)

    淺析java中 Spring MVC 攔截器作用及其實(shí)現(xiàn)

    本篇文章主要介紹了java中SpringMVC 攔截器的使用及其實(shí)例,需要的朋友可以參考
    2017-04-04
  • SpringBoot如何整合SpringDataJPA

    SpringBoot如何整合SpringDataJPA

    這篇文章主要介紹了SpringBoot整合SpringDataJPA代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-02-02

最新評(píng)論

乌鲁木齐县| 绥江县| 锡林郭勒盟| 庄河市| 石门县| 买车| 塘沽区| 扎鲁特旗| 桂东县| 山东省| 中宁县| 德令哈市| 穆棱市| 洞口县| 闽清县| 宁波市| 婺源县| 梧州市| 锦州市| 崇礼县| 开阳县| 汕头市| 桦川县| 雷波县| 通化市| 涟源市| 营口市| 娄底市| 麻栗坡县| 犍为县| 玉环县| 黄大仙区| 卢氏县| 平塘县| 鄯善县| 玉龙| 根河市| 华安县| 上饶市| 湘乡市| 马山县|