如何開啟你的第一個httpClient程式呢?

来源:https://www.cnblogs.com/java265/archive/2022/07/02/16428885.html
-Advertisement-
Play Games

我們在前文中已經介紹了SpringAOP的切麵實現和創建動態代理的過程,那麼動態代理是如何工作的呢?本文主要介紹Cglib動態代理的案例和SpringAOP實現的原理。@pdai Spring框架系列(11) - Spring AOP實現原理詳解之Cglib代理實現 引入 動態代理要解決什麼問題? ...


轉自:

 http://www.java265.com/JavaCourse/202205/3307.html

HttpClient:

        HttpClient 是Apache Jakarta Common 下的子項目,可以用來提供高效的、最新的、功能豐富的支持 HTTP 協議的客戶端編程工具包,並且它支持 HTTP 協議最新的版本和建議

   HTTP 協議是 Internet 上使用得最多、最重要的協議之一,越來越多的 Java 應用程式需要直接通過 HTTP 協議來訪問網路資源。雖然在 JDK 的 java net包中已經提供了訪問 HTTP 協議的基本功能,但是對於大部分應用程式來說,JDK 庫本身提供的功能還不夠豐富和靈活。HttpClient 是 Apache Jakarta Common 下的子項目,用來提供高效的、最新的、功能豐富的支持 HTTP 協議的客戶端編程工具包,並且它支持 HTTP 協議最新的版本和建議。HttpClient 已經應用在很多的項目中,比如 Apache Jakarta 上很著名的另外兩個開源項目 Cactus 和 HTMLUnit 都使用了 HttpClient。Commons HttpClient項目現已終止,不再開發。 它已被Apache HttpComponents項目里的HttpClient和HttpCore模塊取代,它們提供了更好的性能和更大的靈活性。

 HttpClient 主要功能:

(1)實現了所有 HTTP 的方法(GET,POST,PUT,HEAD 等)

(2)支持自動轉向

(3)支持 HTTPS 協議

(4)支持代理伺服器

下文筆者講述第一個HttpClient程式的開發示例分享,如下所示:

實現思路:
    1.創建一個HttpClient
	2.定義一個httpRequest
	3.HttpClient.execute(request)
	4.獲取httpClient運行後的結果

例:

      使用HttpClient編寫的第一個文件下載程式

package com.java265.other.httpClient;
import java.io.ByteArrayOutputStream;
import java.io.InputStream;

import org.apache.hc.client5.http.classic.methods.HttpGet;
import org.apache.hc.client5.http.impl.classic.CloseableHttpClient;
import org.apache.hc.client5.http.impl.classic.CloseableHttpResponse;
import org.apache.hc.client5.http.impl.classic.HttpClients;
import org.apache.hc.core5.http.HttpEntity;

public class HttpClient01 {
	/*
	 * java265.com 第一個HttpClient示例
	 */
	public static void main(String[] args) throws Exception {

		try (CloseableHttpClient httpclient = HttpClients.createDefault()) {
			HttpGet httpGet = new HttpGet("http://www.java265.com");

			InputStream in = null;
			ByteArrayOutputStream bos = new ByteArrayOutputStream();

			try (CloseableHttpResponse response1 = httpclient.execute(httpGet)) {
				System.out.println(response1.getCode() + " " + response1.getReasonPhrase());
				HttpEntity entity1 = response1.getEntity();
				in = entity1.getContent();
				byte[] buffer = new byte[1024];
				int len = -1;
				while ((len = in.read(buffer)) != -1) {
					bos.write(buffer, 0, len);
				}
				
				System.out.println("output:" + bos.toString());

			}catch(Exception e) {
				System.out.println("message:" + e.getMessage());
			}finally {
				 if(null != in) {
						in.close();
				 }
				 
				 if(null != bos) {
						bos.close();
				 }
			}
		}
	}

}

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 網路編程 TCP 編程 使用tcp 之前先建立TCP連接,形成傳輸數據的通道,點對點的通信是可靠的。 2,兩個進程:客戶端 服務端 3,在連接中進行大量數據的傳輸 4,傳輸完畢需要釋放建立的連接,效率較低 客戶端: 1,創建socket對象,指明伺服器端的ip和埠。 2,獲取一個輸出流用於向伺服器 ...
  • 1 商品搶購 主要邏輯是:減庫存,記錄搶購成功的用戶 @RestController public class DemoController { @Resource private StringRedisTemplate stringRedisTemplate; private static fin ...
  • ArrayList分析2 : Itr、ListIterator以及SubList中的坑 轉載請註明出處:https://www.cnblogs.com/funnyzpc/p/16409137.html 一.不論ListIterator還是SubList,均是對ArrayList維護的數組進行操作 首 ...
  • <?php include 'utils.php'; if (isset($_POST['guess'])) { $guess = (string) $_POST['guess']; if ($guess $secret) { $message = 'Congratulations! The fla ...
  • 從源碼角度分析使用Runnable和Callable介面實現多線程的區別 ...
  • 一、七子含義 二、可用值說明 三、可用通配符說明 附:線上Cron表達式生成器 ...
  • 限流 通過限制併發訪問數或者限制一個時間視窗內允許處理的請求數量來保護系統,例如,通過限流,你可以過濾掉產生流量峰值的客戶和服務。 令牌桶演算法 令牌桶演算法是常見的一種限流演算法。假設有一個桶,以固定速度(rate)往桶裡加入令牌(token)。當桶滿了時停止加入。服務收到請求時嘗試從桶里取出令牌。如果 ...
  • 前言 🗯 嗨嘍,大家好呀~這裡是愛看美女的茜茜吶 今天刷視頻的時候,我刷到了一個代碼雨視頻,大家都在說炫酷 於是,現在我來分享一下這個的代碼~ 導入模塊 import random import pygame 初始化參數設計 win_width = 1000 win_height = 800 fo ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...