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

Java使用HttpClient實現(xiàn)Post請求實例

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

基于項目需求,想要實現(xiàn)Post消息推送,故采用HttpClient組件進行實現(xiàn),相關(guān)代碼如下(注:程序采用的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();

    // 設(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)建消息實體
    StringEntity entity = new StringEntity(jsonObj.toString(), Charset.forName("UTF-8"));
    entity.setContentEncoding("UTF-8");
    // 發(fā)送Json格式的數(shù)據(jù)請求
    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;
}

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

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

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

相關(guān)文章

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

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

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

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

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

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

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

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

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

    Java BigDecimal解決double精度丟失的問題

    我們在日常開發(fā)中, 有很多時候會遇到小數(shù)(double類型)精確計算,本文主要介紹了Java BigDecimal解決double精度丟失的問題,具有一定的參考價值,感興趣的可以了解一下
    2023-11-11
  • Java JDK8新增Optional工具類講解

    Java JDK8新增Optional工具類講解

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

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

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

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

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

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

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

    SpringBoot如何整合SpringDataJPA

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

最新評論

洪江市| 奎屯市| 连州市| 满洲里市| 北海市| 乐至县| 长治市| 如皋市| 淮南市| 临颍县| 金乡县| 延安市| 安多县| 临夏县| 富蕴县| 巴青县| 偃师市| 襄垣县| 措美县| 大新县| 齐齐哈尔市| 斗六市| 宕昌县| 平舆县| 连云港市| 白沙| 蒙山县| 根河市| 延津县| 安国市| 蒙阴县| 双辽市| 海南省| 远安县| 汾西县| 泰安市| 大埔区| 湛江市| 玉屏| 文成县| 格尔木市|