1. 程式人生 > >Java網路程式設計——第六章 Http協議

Java網路程式設計——第六章 Http協議

Http請求基本形式:      1、請求頭部:方法 資源路徑 協議與版本      2、請求首部:Http元資料,鍵值對結構,必須是ASCII字元,關鍵字不區分大小,值可以區分大小,也可以不區分,      3、空行  /r/n/r/n      4、訊息體 Http響應基本形式:      1、狀態行:協議/版本、狀態碼、狀態資訊,1xx,提供資訊;2、2xx,成功;3、3xx重定向;4xx,刻畫端錯誤;5xx,服務端錯誤      2、首部      3、空行      4 、訊息體 Keep-Alive:http1.1版本提供,服務端響應後保持socket開啟,在同一個sockst上等待新的請求 Connection: Keep-Alive,預設開啟長連線 Java對Keep-Alive的控制:      1、啟用/禁用:設定http.keepAlive為true或false,預設true      2、http.maxConnections設定最大socket連線數,預設5      3、設定http.keepAlive.remainingData為true,使Java在放棄連線後完成資料清理工作,預設false      4、設定sun.net.http.errorStram.enableBuffering為true,嘗試緩衝4xx、5xx響應的相對小的錯誤流,從而釋放連線,以備重用,預設false      5、設定sun.net.http.errorStram.enableBufferSize為緩衝錯誤流使用的位元組數,預設4096      6、設定sun.net.http.errorStram.enableBufferTimeout為錯誤流超時前的毫秒數,預設300ms Http方法 get:獲取一個資源的表示,沒有副作用 put:將資源的一個表示上傳到一致URL的伺服器,具有冪等性,即可以重複操作 delete:從指定URL刪除一個資源,具有冪等性 post:和put類似,但是沒有指定伺服器如何處理新提交的資料,post需要用於不能重複的不安全的操作 head:和get類似,但只獲取頭部資訊,多用於除錯 options:允許客戶端詢問伺服器如何處理指定資源 trace:回顯客戶端的請求,多用於除錯 Note:不完成提交的所有安全操作應該使用get,需要提交的使用post Cookie:儲存持久的庫客戶端狀態,cookie存在於請求和響應的首部,由伺服器發給客戶端再有客戶端發給服務端,cookie'一般不包含具體資料,只是指示伺服器上的資料;cookie只能是非空白ASCII字元,且不也能包含逗號和分號 cookie特點      1、 伺服器只能為他直接所屬的域設定cookie      2、cookie的預設作用域為原始URL和所有子目錄,但是可以使用Path屬性給編作用域,但也只能指定作用與某個子樹      3、cookie屬性的順序無關緊要,屬性之間使用分號隔開,名-值對放在最前面;      4、可以使用Max-Age屬性設定最長保留時間(單位 s),使用expires屬性設定過期時間      5、可以使用沒有值的secure屬性知識安全的cookie事務,通過使用沒有值的httponly指示瀏覽器只通過http和https返回cookie,尤其不能使用JavaScript CookieManager:抽象類java.net.CookieHandler的一個具體子類,預設不開啟cookie 啟用cookie CookieManager manager = new CookieManager(); CookieHandler.setDefault(manager); cookie 接收策略 CookiePolicy.ACCEPT_ALL 接受所有cookie CookiePolicy.ACCEPT_NONE 不接受cookie CookiePolicy.Accept_ORIGINAL_SERVER  只接受與之對話的伺服器的cookie,不接受第三方cookie 自定義cookie接受策略——實現CookiePolicy介面,然後覆蓋public boolean shouleAccept(URI uri, HttpCookie cookie); 例如:不接受來自 .gov的cookie  public class NoGovermentCookie implements CookiePolicy {      public boolean shouldAccept(URI uri, HttpCookie cookie) {           if(uri.getAuthority().toLowerCase().endWith("gov") || cookie.getDomain().toLowerCase().endWidth("gov")) {                retuern fasle;           }           return true;      } } 儲存cookie 使用CookieManager物件的的getCookieStore物件,進而使用CookieStore的add、remove、get等方法 CookieStroe store = manager.getCookieStore();

相關推薦

Java網路程式設計—— Http協議

Http請求基本形式:      1、請求頭部:方法 資源路徑 協議與版本      2、請求首部:Http元資料,鍵值對結構,必須是ASCII字元,關鍵字不區分大小,值可以區分大小,也可以不區分,      3、空行  /r/n/r/n      4、訊息體 Http響應

JAVA 網路程式設計(7) Netty 處理Http協議 示例

maven中使用netty的版本為: <dependency> <groupId>io.netty</groupId> <artifactId>netty-all</artifactId> &

Java網路程式設計—— 非阻塞I/O

使用非阻塞IO方式實現chargen收發協議 客戶端 import java.io.IOException; import java.net.InetSocketAddress; import java.net.SocketAddress; import java.nio.ByteBuffer; imp

java資料庫程式設計——,課後知識點

1.JDBC由一組使用java語言編寫的類和介面組成,可以為多種關係資料庫提供統一訪問。 2.Sun公司提供了JDBC的介面規範——JDBC APL,而資料庫廠商或第三方中介軟體廠商提供針對不同資料庫的具體實現——JDBC驅動。 3.JDBC訪問資料庫的步驟:載入LDBC

java 網路程式設計【10】 HTTP協議詳解

【1】http協議概念,http1.0與http1.1 區別: 1.http(Hypertext Transfer Protocol)超文字轉出協議,從1990年開始就在www上廣泛應用。HTTP是一個屬於應用層的面向物件的協議,由於其簡捷、快速的方式,適用於分散式超媒體資

Java基礎語言程式設計 一維陣列

一維陣列的定義 1 陣列的定義:    陣列是用來儲存資料的集合,通常把陣列看作一個儲存具有相同型別的變數集合會更有用。 2 宣告陣列變數   為了在程式中使用陣列,必須宣告一個引用陣列的變數,並指明陣列的元素型別。下面是宣告陣列變數的語法:   elementType[]a

JAVA-初步認識--面向對象(舉例)

沒有 指揮 事物 出現 size 面向對象 自己 存儲 完成 一 探討實際生活中出現的兩種思想體現。 視頻中舉了一個例子,攢電腦。面向過程的思想就是自己去搜尋硬件信息,自己去砍價,自己監督商家組裝。面向對象的思想就是找一個懂得人,指揮他去做這件事,他要具備相應的功能。 面向

JAVA-初步認識--面向對象

什麽 image 是個 產生 -s ges es2017 強調 logs 一. 概述 對象是個實體,面向對象就是看著對象。 與面向對象相區別的是面向過程,無論是面向對象還是面向過程,都是一種思想。 過程和對象有區別。 舉例:把大象關進冰箱。 面向過程:打開冰箱,存儲大象,關

JAVA-初步認識--類與對象的關系

logs image 運行 ima com log 我們 -1 計算機語言 一. 對象是對功能的封裝,找到了對象,就找到了功能。 在沒有學習對象之前,接觸的類是什麽東西?和對象有什麽關系? 二 對java而言,現實生活中的個體都是對象。來看一下個體的特點,比如說生活中的汽車

JAVA-初步認識--類與對象的關系(細節)

兩種 -1 屬性 一個 bsp 分享 方法 討論 函數 一 對象.成員的概念,之前沒有講述過成員,現在討論一下成員。 描述完事物後,裏面就有屬性和行為。無論是屬性還是行為,都是事物的組成部分。只要是這個事物中的組成部分,我們就把它稱之為成員。 成員又分為兩種,一個叫成員函數

JAVA-初步認識--匿名對象

垃圾 類型 分享 設計 給定 毫無 style 有意 num 一. 沒有名字的對象。new Car();就是匿名對象,其實就是定義對象的簡寫格式。那麽在調用的時候,就要寫成new Car(). run(); 這是匿名的對象的兩種使用方式之一。 兩句寫成一句。 如果寫成ne

JAVA-初步認識--二維數組-另一種定義方式

包括 [1] 元素 個數 初步 數組 http length nbsp 一. 對於二維數組而言,我們該怎麽獲取它的長度,包括裏面一維數組的長度。 想打印二維數組中角標為1的一維數組的長度。System.out.print(arr[1].length),其實就是元素個數。

201771010143 張雲飛《面向對象程序設計(java)》學習總結

ktr 升級 讀取文件 設計 via over core desktop 簡化 實驗六繼承定義與使用 實驗時間2018-9-28 1、實驗目的與要求 (1) 理解繼承的定義; 特殊類的對象擁有一般類的全部屬性與行為,稱為特殊類對一般類的繼承。一個類可以是多個一般類的特殊類,

物理層_計算機網路原理_自考本科段

概要:計算機網路原理第七章物理層知識點小結 1、資料通訊基礎 識記:資料通訊基本概念;資料通訊基本模型; (1)資料通訊基本概念:通過通道中的訊號資料,交換訊息與資訊; (2)資料通訊基本模型:信源、傳送裝置、通道、接收裝置、信宿、噪聲源   領會:資料、訊號概念與

組合語言程式設計

6.1在程式碼段中使用資料 dw,即“define word”。是定義字型資料。dw定義了8個字元資料,資料之間以逗號分隔。 因為cs前16個記憶體單元用來存放資料,所以程式應從這16個記憶體單元后開始執行。1.用start:放在程式開始處;2.在最後一個end處加上start(start只是標號,也可以

python核心程式設計

6-1 字串。string模組中是否有一種字串方法或者函式可以鑑定一個字串是否是另一個大字串的一部分? #in/not in 可以判斷一個字串是否再另一個字串中 'bc' in 'abcd' Out[3

C++11多執行緒程式設計 : 多執行緒之間的事件處理

C++11 Multithreading – Part 6: Need of Event Handling Varun June 1, 2015 C++11 Multithreading – Part 6: Need of Event Handling2018-08-18T1

HTTP圖解讀書筆記( HTTP首部)為cookie服務的首部欄位和其它首部欄位

為cookie服務的首部欄位 Set-Cookie  當服務端開始準備管理客戶端的狀態時,會事先告知各種資訊。 Set-Cookie欄位屬性: expires           指定瀏覽器可傳送c

HTTP圖解讀書筆記( HTTP首部)實體首部欄位

實體首部欄位是包含在請求報文和響應報文中的實體部分所使用的首部,用於補充內容的更新時間等與實體相關的資訊。 Allow 通知客戶端能夠支援Request-URI指定資源的所有HTTP方法。 當伺服器端收到不支援的HTTP方法時會返回405 Method Not Allowed。還會把支援

HTTP圖解讀書筆記( HTTP首部)響應首部欄位

Accept-Ranges 告知客戶端伺服器是否可以處理範圍請求(可以:bytes,不可以:none) Age 告訴客戶端,源伺服器在多久前建立了響應,單位為秒 ETag 首部欄位 ETag 能告知客戶端實體標識。它是一種可將資源以字串形式做唯一性標識的方式。伺服器會為每份資源分