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

Java httpcomponents發(fā)送get post請求代碼實例

 更新時間:2020年09月17日 11:05:10   作者:賈樹丙  
這篇文章主要介紹了Java httpcomponents發(fā)送get post請求代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下

引入的包為:

<!-- https://mvnrepository.com/artifact/org.apache.httpcomponents/httpclient -->
<dependency>
  <groupId>org.apache.httpcomponents</groupId>
  <artifactId>httpclient</artifactId>
  <version>4.5.8</version>
</dependency>

實現(xiàn)的工具類為:

import com.alibaba.fastjson.JSON;
import org.apache.http.NameValuePair;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.message.BasicNameValuePair;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

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

  private HttpClientHelper() {

  }

  /**
   * 發(fā)起POST請求
   *
   * @param url   url
   * @param paramMap 參數(shù)的Map格式
   */
  public static void sendPost(String url, Map<String, String> paramMap) {
    logger.info("開始發(fā)起POST請求,請求地址為{},參數(shù)為{}", url, JSON.toJSON(paramMap));
    CloseableHttpResponse response = null;

    try (CloseableHttpClient httpClient = HttpClients.createDefault()) {
      String encoding = "utf-8";
      //創(chuàng)建post請求對象
      HttpPost httpPost = new HttpPost(url);
      //裝填請求參數(shù)
      List<NameValuePair> list = new ArrayList<>();
      for (Map.Entry<String, String> entry : paramMap.entrySet()) {
        list.add(new BasicNameValuePair(entry.getKey(), entry.getValue()));
      }
      //設(shè)置參數(shù)到請求對象中
      httpPost.setEntity(new UrlEncodedFormEntity(list, encoding));
      httpPost.setHeader("Content-type", "application/x-www-form-urlencoded");
      httpPost.setHeader("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)");
      response = httpClient.execute(httpPost);

    } catch (IOException e) {
      logger.error("POST請求發(fā)出失敗,請求的地址為{},參數(shù)為{},錯誤信息為{}", url, JSON.toJSON(paramMap), e.getMessage(), e);
    } finally {
      try {
        if (response != null) {
          response.close();
        }
      } catch (IOException e) {
        logger.error("POST請求response關(guān)閉異常,錯誤信息為{}", e.getMessage(), e);
      }
    }
  }

  /**
   * 發(fā)起GET請求
   *
   * @param urlParam url請求,包含參數(shù)
   */
  public static void sendGet(String urlParam) {
    logger.info("開始發(fā)起GET請求,請求地址為{}", urlParam);
    HttpGet httpGet = new HttpGet(urlParam);
    CloseableHttpResponse response = null;
    try (CloseableHttpClient httpClient = HttpClients.createDefault()) {
      response = httpClient.execute(httpGet);
      int status = response.getStatusLine().getStatusCode();
      logger.error("GET請求發(fā)出成功,請求的地址為{},返回狀態(tài)為{}", urlParam, status);
    } catch (IOException e) {
      logger.error("GET請求發(fā)出失敗,請求的地址為{},錯誤信息為{}", urlParam, e.getMessage(), e);
    } finally {
      try {
        if (response != null) {
          response.close();
        }
      } catch (IOException e) {
        logger.error("GET請求response關(guān)閉異常,錯誤信息為{}", e.getMessage(), e);
      }
    }
  }

  public static void main(String[] args) {
    String url = "https://jiashubing.cn/tencenttest";
    //需要傳入的參數(shù)
    Map<String, String> map = new HashMap<>();
    map.put("code", "js");
    map.put("day", "0");
    map.put("city", "北京");
    map.put("dfc", "1");
    map.put("charset", "utf-8");
    sendPost(url, map);


    String urlParam = "https://jiashubing.cn/talk/document?fileid=1234ji賈樹丙";
    sendGet(urlParam);
  }
}

如果POST請求想要發(fā)送Json 格式的數(shù)據(jù),只需要修改成這樣:

String json = JSON.toJSONString(paramMap);
StringEntity requestEntity = new StringEntity(json, "utf-8");
httpPost.setEntity(requestEntity);

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

相關(guān)文章

  • Java中的關(guān)鍵字volatile詳解

    Java中的關(guān)鍵字volatile詳解

    這篇文章主要介紹了Java中的關(guān)鍵字volatile,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-03-03
  • Java圖片壓縮三種高效壓縮方案詳細解析

    Java圖片壓縮三種高效壓縮方案詳細解析

    圖片壓縮通常涉及減少圖片的尺寸縮放、調(diào)整圖片的質(zhì)量(針對JPEG、PNG等)、使用特定的算法來減少圖片的數(shù)據(jù)量等,這篇文章主要介紹了Java圖片壓縮三種高效壓縮方案的相關(guān)資料,需要的朋友可以參考下
    2025-04-04
  • springboot打成jar后獲取classpath下文件失敗的解決方案

    springboot打成jar后獲取classpath下文件失敗的解決方案

    這篇文章主要介紹了使用springboot打成jar后獲取classpath下文件失敗的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • Java面向?qū)ο笾橄箢?接口的那些事

    Java面向?qū)ο笾橄箢?接口的那些事

    這篇文章主要介紹了Java面向?qū)ο蠡A(chǔ):抽象類和接口,文中代碼可以幫助各位更好的理解學習,有需求的小伙伴可以參考下,希望能夠給你帶來幫助
    2021-08-08
  • idea報錯:java程序包com.github.xiaoymin.knife4j.spring.annotations不存在問題解決

    idea報錯:java程序包com.github.xiaoymin.knife4j.spring.annotations

    這篇文章主要介紹了idea報錯:java程序包com.github.xiaoymin.knife4j.spring.annotations不存在問題解決,需要的朋友可以參考下
    2023-06-06
  • Java的作業(yè)調(diào)度類庫Quartz基本使用指南

    Java的作業(yè)調(diào)度類庫Quartz基本使用指南

    這篇文章主要介紹了Java的作業(yè)調(diào)度類庫Quartz基本使用指南,Quartz能夠讓類按照指定的計劃順序執(zhí)行,需要的朋友可以參考下
    2016-03-03
  • springboot+springsecurity如何實現(xiàn)動態(tài)url細粒度權(quán)限認證

    springboot+springsecurity如何實現(xiàn)動態(tài)url細粒度權(quán)限認證

    這篇文章主要介紹了springboot+springsecurity如何實現(xiàn)動態(tài)url細粒度權(quán)限認證的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • java的list集合排序自定義元素方式

    java的list集合排序自定義元素方式

    在Java中,對包含自定義元素的List集合進行排序可以使用Collections.sort()方法,并結(jié)合自定義的比較器實現(xiàn),以Student類為例,通過實現(xiàn)Comparator接口來按學生年齡升序排序
    2024-12-12
  • Java數(shù)據(jù)結(jié)構(gòu)之鏈表詳解

    Java數(shù)據(jù)結(jié)構(gòu)之鏈表詳解

    本篇文章我們將講解一種新型的數(shù)據(jù)結(jié)構(gòu)—鏈表,鏈表是一種使用廣泛的通用數(shù)據(jù)結(jié)構(gòu),它可以用來作為實現(xiàn)棧,隊列等數(shù)據(jù)結(jié)構(gòu)的基礎(chǔ).文中有非常詳細的介紹,需要的朋友可以參考下
    2021-05-05
  • Spring基于注解管理bean實現(xiàn)方式講解

    Spring基于注解管理bean實現(xiàn)方式講解

    很多時候我們需要根據(jù)不同的條件在容器中加載不同的Bean,或者根據(jù)不同的條件來選擇是否在容器中加載某個Bean,這就是Bean的加載控制,一般我們可以通過編程式或注解式兩種不同的方式來完成Bean的管理
    2023-01-01

最新評論

师宗县| 凯里市| 罗山县| 五莲县| 兴安盟| 淮滨县| 岳阳市| 若尔盖县| 红河县| 尚义县| 海兴县| 叶城县| 股票| 育儿| 广东省| 霍城县| 贵港市| 赤峰市| 平乐县| 河北省| 兴文县| 米脂县| 太湖县| 邹平县| 古浪县| 晋中市| 和平县| 黄大仙区| 荣成市| 中江县| 安乡县| 遂溪县| 迭部县| 华阴市| 互助| 佛学| 隆安县| 右玉县| 长岭县| 苏尼特右旗| 天柱县|