HttpClient--01--簡介
標簽: 項目-框架-擴展
HttpClient
1 業務需求
業務說明:當做某些操作時,可能會對數據進行業務加工,之后由服務器與服務器之間形同通訊.
2.遠程調用的說明
- 瀏覽器解析ajax發起跨域請求.程序雖然可以正確的調用,但是瀏覽器可以監控用戶的所有的參數及返回值. 在一些特定的條件下該操作不安全.
- 一般使用跨域的請求都是用來獲取其他服務器的數據(查詢操作),如果遇到了POST需要提交的參數應該使用更加安全的請求方式實現.
3.HttpClient介紹
HTTP 協議可能是現在 Internet 上使用得最多、最重要的協議了,越來越多的 Java 應用程序需要直接通過 HTTP 協議來訪問網絡資源。雖然在 JDK 的 java net包中已經提供了訪問 HTTP 協議的基本功能,但是對于大部分應用程序來說,JDK 庫本身提供的功能還不夠豐富和靈活。
HttpClient 是 Apache Jakarta Common 下的子項目,用來提供高效的、最新的、功能豐富的支持 HTTP 協議的客戶端編程工具包,并且它支持 HTTP 協議最新的版本和建議。 HttpClient 已經應用在很多的項目中,比如 Apache Jakarta 上很著名的另外兩個開源項目 Cactus 和 HTMLUnit 都使用了 HttpClient。現在HttpClient最新版本為 HttpClient 4.5 .6(2015-09-11)
總結: 在java代理內部可以使用httpClient發起http請求訪問服務器獲取資源.(工具API)
入門案例
1 引入jar包
<!--添加httpClient jar包 -->
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
</dependency>
2 編輯測試API
/**
* 要求:在java代碼內部,獲取百度的頁面.
* 實現步驟:
* 1.確定目標地址: https://www.baidu.com/
* 2.創建httpClient客戶端對象
* 3.創建請求類型
* 4.發起http請求.并且獲取響應的結果.之后判斷狀態碼是否為200 如果等于200則請求正確
* 5.如果請求正確則動態獲取響應值信息.之后進行數據的再次加工....
* */
package com.jt;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.methods.HttpPut;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import org.junit.jupiter.api.Test;
import java.io.IOException;
public class HttpClientTest {
@Test
public void testGet() throws IOException {
String url = "http://www.baidu.com/";
HttpClient httpClient = HttpClients.createDefault();
HttpGet httpGet = new HttpGet(url);
HttpResponse httpResponse = httpClient.execute(httpGet);
if(httpResponse.getStatusLine().getStatusCode() == 200) {
//表示用戶請求正確
//獲取返回值數據
HttpEntity httpEntity = httpResponse.getEntity();
String result = EntityUtils.toString(httpEntity, "UTF-8");
System.out.println(result);
}
}
}
智能推薦
01CSS簡介
1.CSS簡介 CSS的主要使用場景用來美化網頁,布局頁面的。 HTML的局限性 CSS-網頁的美容師 1.1 HTML的局限性 說到HTML,這其實是一個非常單純的東西,它只關注內容的語義。比如<h1>表明這是一個大標題,<p>表示這是一個段落,<img>表示這是一個圖片,<a>表示這是一個鏈接。 早期的時候,世界上的網站雖然有很多,但它們都有一個...
01.node簡介
node是什么玩意? 簡單的說 Node.js 就是運行在服務端的 JavaScript。 Node.js 是一個基于Chrome JavaScript 運行時建立的一個平臺。 Node.js是一個事件驅動I/O服務端JavaScript環境,基于Google的V8引擎,V8引擎執行Javascript的速度非常快,性能非常好。 怎么玩? 1、安裝node https://nodejs.org/z...
mybatis01-簡介
文章目錄 0.拓展 1.jdbc操作數據庫 1.1 maven依賴 1.2 java代碼 1.3 傳統 JDBC 的弊端 2.現階段數據訪問層框架 2.什么是mybatis 2.1 參考手冊 2.2 mybatis架構 3.helloword(xml) 4.mybatis全局注解詳解 5.mybatis注解實現 5.1 mybatis-config.xml 5.2 UserMapper 6.Myb...
01 ElasticSearch簡介
01 ElasticSearch簡介 1.1什么是ElasticSearch Elaticsearch,簡稱為es, es是一個開源的高擴展的分布式全文檢索引擎,它可以近乎實時的存儲、檢索數據;本 身擴展性很好,可以擴展到上百臺服務器,處理PB級別的數據。es也使用Java開發并使用Lucene作為其核心來實 現所有索引和搜索的功能,但是它的目的是通過簡單的RESTful API來隱藏Lucene...
【01】Git簡介
簡介 Git是一個分布式版本控制系統(Distributed Version Control System,簡稱 DVCS)。 特點 直接記錄快照,而非差異比較 近乎所有操作都是本地操作 Git保證完整性 git數據庫中保存的信息都是以文件內容的哈希值來索引,而不是文件名。 Git一般只添加數據 三種狀態 狀態 描述 已提交(committed) 數據已經安全的保存在本地數據庫中 已修改(modi...
猜你喜歡
01.JVM簡介
01.JVM簡介 計算機系統當中JVM所處的位置 Java一次編譯,到處運行 Java代碼的執行流程 JVM體系結構概覽 棧的指令集架構和寄存器的指令集架構 jvm生命周期 1.啟動 2.執行 3.退出 jvm發展歷程 Android虛擬機 DVM 計算機系統當中JVM所處的位置 JVM是運行在操作系統之上的,并沒有和硬件有直接的交互 JVM屬于系統虛擬機 Java一次編譯,到處運行 Java代碼...
Qt基礎簡介-01
一、常用快捷鍵 ctrl + /:注釋 ctrl + r:運行 ctrl + b:編譯 ctrl + f:查找 F1:選擇目標后幫助文檔 ctrl +i:代碼自動對齊 F4:同名文件.h和.cpp之間的切換 二、創建Qt項目 1、選擇桌面應用程序 2、在Qt Creator中來創建項目時選擇MinGW編譯套件,MSVC2017是在VS中創建項目時的編譯器 3、類信息的設置 1)QWidget是 Q...
freemarker + ItextRender 根據模板生成PDF文件
1. 制作模板 2. 獲取模板,并將所獲取的數據加載生成html文件 2. 生成PDF文件 其中由兩個地方需要注意,都是關于獲取文件路徑的問題,由于項目部署的時候是打包成jar包形式,所以在開發過程中時直接安照傳統的獲取方法沒有一點文件,但是當打包后部署,總是出錯。于是參考網上文章,先將文件讀出來到項目的臨時目錄下,然后再按正常方式加載該臨時文件; 還有一個問題至今沒有解決,就是關于生成PDF文件...
電腦空間不夠了?教你一個小秒招快速清理 Docker 占用的磁盤空間!
Docker 很占用空間,每當我們運行容器、拉取鏡像、部署應用、構建自己的鏡像時,我們的磁盤空間會被大量占用。 如果你也被這個問題所困擾,咱們就一起看一下 Docker 是如何使用磁盤空間的,以及如何回收。 docker 占用的空間可以通過下面的命令查看: TYPE 列出了docker 使用磁盤的 4 種類型: Images:所有鏡像占用的空間,包括拉取下來的鏡像,和本地構建的。 Con...