欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

詳解HttpClient用法

 更新時(shí)間:2021年01月11日 14:24:25   作者:自律成就自由  
HttpClient是Apache Jakarta Common下的子項(xiàng)目,用來(lái)提供高效的、最新的、功能豐富的支持HTTP協(xié)議的客戶端編程工具包,并且它支持HTTP協(xié)議最新的版本和建議,這篇文章主要介紹了詳解HttpClient用法,需要的朋友可以參考下

上篇文章給大家介紹了HttpClient詳細(xì)使用示例詳解,喜歡的朋友可以點(diǎn)擊查看,今天繼續(xù)給大家介紹HttpClient用法,具體內(nèi)容如下所示;

1.簡(jiǎn)介

HttpClient是Apache Jakarta Common下的子項(xiàng)目,用來(lái)提供高效的、最新的、功能豐富的支持HTTP協(xié)議的客戶端編程工具包,并且它支持HTTP協(xié)議最新的版本和建議。HttpClient已經(jīng)應(yīng)用在很多的項(xiàng)目中,比如Apache Jakarta上很著名的另外兩個(gè)開(kāi)源項(xiàng)目Cactus和HTMLUnit都使用了HttpClient。
HttpClient相比傳統(tǒng)JDK自帶的URLConnection,增加了易用性和靈活性,它不僅使客戶端發(fā)送Http請(qǐng)求變得容易,而且也方便開(kāi)發(fā)人員測(cè)試接口(基于Http協(xié)議的),提高了開(kāi)發(fā)的效率,也方便提高代碼的健壯性。

2.特性

  1. 基于標(biāo)準(zhǔn)、純凈的java語(yǔ)言。實(shí)現(xiàn)了Http1.0和Http1.1
  2. 以可擴(kuò)展的面向?qū)ο蟮慕Y(jié)構(gòu)實(shí)現(xiàn)了Http全部的方法(GET, POST, PUT, DELETE, HEAD, OPTIONS, and TRACE)。
  3. 支持HTTPS協(xié)議。
  4. 通過(guò)Http代理建立透明的連接。
  5. 利用CONNECT方法通過(guò)Http代理建立隧道的https連接。
  6. Basic, Digest, NTLMv1, NTLMv2, NTLM2 Session, SNPNEGO/Kerberos認(rèn)證方案。
  7. 插件式的自定義認(rèn)證方案。
  8. 便攜可靠的套接字工廠使它更容易的使用第三方解決方案。
  9. 連接管理器支持多線程應(yīng)用。支持設(shè)置最大連接數(shù),同時(shí)支持設(shè)置每個(gè)主機(jī)的最大連接數(shù),發(fā)現(xiàn)并關(guān)閉過(guò)期的連接。
  10. 自動(dòng)處理Set-Cookie中的Cookie。
  11. 插件式的自定義Cookie策略。
  12. Request的輸出流可以避免流中內(nèi)容直接緩沖到socket服務(wù)器。
  13. Response的輸入流可以有效的從socket服務(wù)器直接讀取相應(yīng)內(nèi)容。
  14. 在http1.0和http1.1中利用KeepAlive保持持久連接。
  15. 直接獲取服務(wù)器發(fā)送的response code和 headers。
  16. 設(shè)置連接超時(shí)的能力。
  17. 實(shí)驗(yàn)性的支持http1.1 response caching。
  18. 源代碼基于Apache License 可免費(fèi)獲取。

3.使用方法

  1. 創(chuàng)建HttpClient對(duì)象。
  2. 創(chuàng)建請(qǐng)求方法的實(shí)例,并指定請(qǐng)求URL。如果需要發(fā)送GET請(qǐng)求,創(chuàng)建HttpGet對(duì)象;如果需要發(fā)送POST請(qǐng)求,創(chuàng)建HttpPost對(duì)象。
  3. 如果需要發(fā)送請(qǐng)求參數(shù),可調(diào)用HttpGet、HttpPost共同的setParams(HttpParams params)方法來(lái)添加請(qǐng)求參數(shù);對(duì)于HttpPost對(duì)象而言,也可調(diào)用setEntity(HttpEntity entity)方法來(lái)設(shè)置請(qǐng)求參數(shù)。
  4. 調(diào)用HttpClient對(duì)象的execute(HttpUriRequest request)發(fā)送請(qǐng)求,該方法返回一個(gè)HttpResponse。
  5. 調(diào)用HttpResponse的getAllHeaders()、getHeaders(String name)等方法可獲取服務(wù)器的響應(yīng)頭;調(diào)用HttpResponse的getEntity()方法可獲取HttpEntity對(duì)象,該對(duì)象包裝了服務(wù)器的響應(yīng)內(nèi)容。程序可通過(guò)該對(duì)象獲取服務(wù)器的響應(yīng)內(nèi)容。
  6. 釋放連接。無(wú)論執(zhí)行方法是否成功,都必須釋放連接

4、實(shí)例

4.1 導(dǎo)入pom

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>com.wo</groupId>
  <artifactId>HttpClient_test</artifactId>
  <version>1.0-SNAPSHOT</version>

  <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.0.3.RELEASE</version>
    <relativePath/> <!-- lookup parent from repository -->
  </parent>

  <dependencies>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.httpcomponents</groupId>
      <artifactId>httpclient</artifactId>
      <version>4.5.5</version>
    </dependency>
    <dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>fastjson</artifactId>
      <version>1.2.47</version>
    </dependency>
  </dependencies>
</project>

4.2.get請(qǐng)求方式

@RequestMapping("findAll")
  public String findAll() throws Exception{
    //獲得Http客戶端
    CloseableHttpClient build = HttpClientBuilder.create().build();
    //創(chuàng)建get請(qǐng)求
    HttpGet httpGet = new HttpGet("http://localhost:8088/lunbo/findAll");
    //執(zhí)行請(qǐng)求
    CloseableHttpResponse execute = build.execute(httpGet);
    //解析返回值
    StatusLine statusLine = execute.getStatusLine();
    //獲取到返回狀態(tài)碼
    System.out.println("狀態(tài)碼為:"+statusLine.getStatusCode());
    String s = EntityUtils.toString(execute.getEntity());
    build.close();
    execute.close();
    return s;
  }

4.3 post請(qǐng)求方式

//post路徑傳參
  @RequestMapping("/findAllPost/{page}/{size}")
  public String findAll(@PathVariable("page") int page,@PathVariable("size") int size) throws Exception {
    //獲得Http客戶端
    CloseableHttpClient build = HttpClientBuilder.create().build();
    //創(chuàng)建post請(qǐng)求
    HttpPost httpPost = new HttpPost("http://localhost:8088/position/findAll/"+page+"/"+size);
    //執(zhí)行請(qǐng)求
    CloseableHttpResponse execute = build.execute(httpPost);
    //解析返回值
    StatusLine statusLine = execute.getStatusLine();
    //獲取到返回狀態(tài)碼
    System.out.println("狀態(tài)碼為:"+statusLine.getStatusCode());
    String s = EntityUtils.toString(execute.getEntity());
    build.close();
    execute.close();
    return s;
  }

  //post map傳參
  @RequestMapping("findById")
  public String findById(@RequestParam("id") Integer id)throws Exception{
    //創(chuàng)建httpclicent請(qǐng)求對(duì)象
    CloseableHttpClient build = HttpClientBuilder.create().build();
    //聲明請(qǐng)求方式
    HttpPost httpPost = new HttpPost("http://localhost:8088/position/findById");
    //聲明攜帶參數(shù)
    Map map=new HashMap<>();
    map.put("id",id);
    //將map轉(zhuǎn)換為json格式
    Object o = JSONObject.toJSON(map);
    //設(shè)置請(qǐng)求 參數(shù)的編碼格式
    StringEntity stringEntity = new StringEntity(o.toString(), "utf-8");
    //將參數(shù)設(shè)置到請(qǐng)求對(duì)象中
    httpPost.setEntity(stringEntity);
    //設(shè)置content-Type
    httpPost.setHeader("Content-Type","application/json");
    //執(zhí)行請(qǐng)求
    CloseableHttpResponse execute = build.execute(httpPost);
    //解析返回值
    StatusLine statusLine = execute.getStatusLine();
    //獲取到返回狀態(tài)碼
    System.out.println("狀態(tài)碼為:"+statusLine.getStatusCode());
    String s = EntityUtils.toString(execute.getEntity());
    build.close();
    execute.close();
    return s;
  }

到此這篇關(guān)于詳解HttpClient用法的文章就介紹到這了,更多相關(guān)HttpClient用法內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • springboot利用aop實(shí)現(xiàn)接口異步(進(jìn)度條)的全過(guò)程

    springboot利用aop實(shí)現(xiàn)接口異步(進(jìn)度條)的全過(guò)程

    我們?cè)陂_(kāi)發(fā)中,調(diào)用第三方接口時(shí),往往是提交數(shù)據(jù),要異步去獲取數(shù)據(jù),下面這篇文章主要給大家介紹了關(guān)于springboot利用aop實(shí)現(xiàn)接口異步(進(jìn)度條)的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-01-01
  • IDEA強(qiáng)制清除Maven緩存的方法示例

    IDEA強(qiáng)制清除Maven緩存的方法示例

    這篇文章主要介紹了IDEA強(qiáng)制清除Maven緩存的方法示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-06-06
  • 聊聊SpringCloud和SpringCloudAlibaba的區(qū)別

    聊聊SpringCloud和SpringCloudAlibaba的區(qū)別

    這篇文章主要介紹了SpringCloud和SpringCloudAlibaba的區(qū)別,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • Maven之導(dǎo)入thymeleaf依賴飄紅問(wèn)題及解決

    Maven之導(dǎo)入thymeleaf依賴飄紅問(wèn)題及解決

    這篇文章主要介紹了Maven之導(dǎo)入thymeleaf依賴飄紅問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • Java并發(fā)系列之AbstractQueuedSynchronizer源碼分析(條件隊(duì)列)

    Java并發(fā)系列之AbstractQueuedSynchronizer源碼分析(條件隊(duì)列)

    這篇文章主要為大家詳細(xì)介紹了Java并發(fā)系列之AbstractQueuedSynchronizer源碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-02-02
  • Spring中自動(dòng)注入的兩種方式總結(jié)

    Spring中自動(dòng)注入的兩種方式總結(jié)

    Spring的核心技術(shù)IOC(Intorol of Converse控制反轉(zhuǎn))的實(shí)現(xiàn)途徑是DI(dependency Insert依賴注入)。而依賴注入(DI)的實(shí)現(xiàn)方式又有兩種,xml方式和注解方式。本文就來(lái)詳細(xì)聊聊這兩個(gè)方式,需要的可以了解一下
    2022-10-10
  • Spring詳細(xì)講解事務(wù)失效的場(chǎng)景

    Spring詳細(xì)講解事務(wù)失效的場(chǎng)景

    實(shí)際項(xiàng)目開(kāi)發(fā)中,如果涉及到多張表操作時(shí),為了保證業(yè)務(wù)數(shù)據(jù)的一致性,大家一般都會(huì)采用事務(wù)機(jī)制,好多小伙伴可能只是簡(jiǎn)單了解一下,遇到事務(wù)失效的情況,便會(huì)無(wú)從下手,下面這篇文章主要給大家介紹了關(guān)于Spring事務(wù)失效場(chǎng)景的相關(guān)資料,需要的朋友可以參考下
    2022-07-07
  • SpringBoot集成mqtt的多模塊項(xiàng)目配置詳解

    SpringBoot集成mqtt的多模塊項(xiàng)目配置詳解

    這篇文章主要介紹了SpringBoot集成mqtt的多模塊項(xiàng)目配置詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • SpringBoot中的WebSocketSession原理詳解

    SpringBoot中的WebSocketSession原理詳解

    這篇文章主要介紹了SpringBoot中的WebSocketSession原理詳解,傳統(tǒng)的?HTTP?協(xié)議是無(wú)法支持實(shí)時(shí)通信的,因?yàn)樗且环N無(wú)狀態(tài)協(xié)議,每次請(qǐng)求都是獨(dú)立的,無(wú)法保持連接。為了解決這個(gè)問(wèn)題,WebSocket?協(xié)議被引入,需要的朋友可以參考下
    2023-07-07
  • java解析XML Node與Element的區(qū)別(推薦)

    java解析XML Node與Element的區(qū)別(推薦)

    下面小編就為大家分享一篇java解析XML Node與Element的區(qū)別,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-01-01

最新評(píng)論