1. 程式人生 > >java網路socket程式設計(六)之HTTP請求/響應報文

java網路socket程式設計(六)之HTTP請求/響應報文

介紹

http報文包含請求報文和響應報文2種報文,他們都包含起始行、首部欄位、主體三部分。其中,請求報文為客戶端向伺服器端請求資源時傳送的http報文位請求包含,而響應報文為從伺服器端發往客戶端的報文。由於他們的報文很類似,下面簡單的介紹報文的三部分: 1.起始行 報文的第一行就是起始行,在請求報文中用來說明要做些什麼,而在響應報文中說明出現了什麼情況。 2.首部欄位 起始行後面有0個或者多個首部欄位。每個首部欄位都包含一個名字和一個值,為了便於解析,兩者之間用冒號來分割。首部以一個空行結束。新增一個首部欄位和新增一個新行一樣簡單。 3.主體 空行之後就是可選的報文主體了,其中包含了所有型別的資料。請求主體中包含了要傳送為web伺服器的資料;響應主體中撞在了要返回給客戶端的資料。起始行和首部都是文字形式且都是結構化的,而主體不同,它可以包含任意的二進位制資料(如圖片,視訊、音訊等等)。當然也可以包含文字。
下圖為一個完整的請求、響應的流程圖:描述了完整的客戶端請求http://www.joes-hardware.com/tools.html資源的過程,   其中請求報文中的 起始行包含了請求的方法get、請求的資源相對位置 、協議的版本等。 請求首部主要包含描述客戶端瀏覽器版本、請求伺服器host、客戶端接收文字格式、接收的語言設定等 請求主體為空   而響應報文包含: 響應行中包含響應的http協議版本、伺服器返回的狀態碼、狀態值三部分 響應首部包含伺服器響應時間、web伺服器版本、修改時間、響應文字的型別等 響應主體包含了客戶端要顯示的文字內容 下圖為響應碼的圖解:

相關推薦

java網路socket程式設計HTTP請求/響應報文

介紹 http報文包含請求報文和響應報文2種報文,他們都包含起始行、首部欄位、主體三部分。其中,請求報文為客戶端向伺服器端請求資源時傳送的http報文位請求包含,而響應報文為從伺服器端發往客戶端的報文

java網路socket程式設計ServerSocket伺服器端

package com.hq.socket; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import jav

java併發程式設計讀寫鎖

一、讀寫鎖我們知道在多個執行緒訪問同一個資料的時候是存線上程安全問題的,而在僅僅是讀取資料的時候,是沒有安全問題的,那麼多個執行緒同時讀取資料我們就可以讓其不互斥;而多個執行緒都在修改(寫)資料或有的在讀取有的在寫入的時候再讓其互斥,這樣不但保證執行緒安全而且提高效能。Rea

Java 多執行緒Java記憶體模型

1. 併發程式設計的兩個問題 在併發程式設計中, 需要處理兩個關鍵問題: 執行緒之間如何通訊及執行緒之間如何同步 通訊指的是執行緒之間是以何種機制來交換資訊, 在指令式程式設計中, 執行緒之間的通訊機制有兩種:共享記憶體和訊息傳遞。在共享記憶體的模型中, 執行緒之間共享程式的公共狀態, 通過讀寫記憶體中的

Java多執行緒Deque與LinkedBlockingDeque深入分析

1、LinkedBlockingDeque資料結構 雙向併發阻塞佇列。所謂雙向是指可以從佇列的頭和尾同時操作,併發只是執行緒安全的實現,阻塞允許在入隊出隊不滿足條件時掛起執行緒,這裡說的佇列是指支援FIFO/FILO實現的連結串列。 首先看下LinkedBlockingDeque的資料結構。通常情況

linux下C程式設計 void用法大總結

這次對void差不多有點多少的理解了,從最初的理解就是空,麼有的意思。首先void是C語言中的關鍵字,對函式返回值的限定,對函式引數的限定。 1.void*常常被稱為空指標,其實理解為指向任意型別的指標比較合適,as we all kown,如果指標p1和指標p2的型別相同

進擊的小白Day011——基於TCP的Socket程式設計

把Socket程式中一些複雜的部分整合成函式,雖然有些程式碼量比較短沒必要整合,但還是鍛鍊一下這個方法吧。 #define _CRT_SECURE_NO_WARNINGS #pragma comment(lib,"ws2_32.lib") #define POR

python介面測試學習3http請求引數

post請求引數常見:1. application/json     {“key1“:”value1”,“key2":“value2"}2. application/x-www-form-urlencoded        key1=value1&key2=value

JAVA網路程式設計 ——基於TCP的Socket程式設計1——實現伺服器端與客戶端的實時對話

第一篇文章,我先介紹以及記錄一下我所學的知識點。(總結了一下視訊老師講的東西)一,HTTP與Socket1.HTTP:超文字傳輸協議特點:客戶端傳送的請求需要伺服器端每次來響應,在請求結束之後主動釋放連線,從建立連線到關閉連線稱為“一次連線”,所以HTTP是“短連線”。2.S

java網路程式設計:13、基於UDP的socket程式設計實現相互發送接收訊息

宣告:本教程不收取任何費用,歡迎轉載,尊重作者勞動成果,不得用於商業用途,侵權必究!!! 文章目錄 一、前言 二、基於UDP伺服器端程式的編寫 三、基於UDP客戶端程式的編寫 四、測試列印 五、系列文章(java網路程式設計) 通過上兩篇文章:1、瞭解了基於UDP

java網路程式設計:12、基於UDP的socket程式設計程式碼通訊-簡單例項

宣告:本教程不收取任何費用,歡迎轉載,尊重作者勞動成果,不得用於商業用途,侵權必究!!! 文章目錄 一、基於UDP伺服器端程式的編寫 二、基於UDP客戶端程式的編寫 三、系列文章(java網路程式設計) 通過上篇文章瞭解了基於UDP通訊的理論、基本步驟以及它跟TCP的區別

java網路程式設計:11、基於UDP的socket程式設計理論、基本步驟

宣告:本教程不收取任何費用,歡迎轉載,尊重作者勞動成果,不得用於商業用途,侵權必究!!! 文章目錄 一、基於UDP的socket程式設計 二、基本步驟 三、系列文章(java網路程式設計) 一、基於UDP的socket程式設計 對於基於UDP通訊來說,通訊雙方不需要建

java網路程式設計:10、基於TCP的socket程式設計緩衝流、flush方法、關閉流

宣告:本教程不收取任何費用,歡迎轉載,尊重作者勞動成果,不得用於商業用途,侵權必究!!! 文章目錄 一、使用緩衝流、註釋流的關閉—帶來的效果 二、使用flush方法—帶來的效果 三、關閉流—帶來的效果 四、系列文章(java網路程式設計) 上篇講了基於tcp的程式設計

java網路程式設計:9、基於TCP的socket程式設計伺服器端迴圈監聽接收多個客戶端_多執行緒伺服器程式

宣告:本教程不收取任何費用,歡迎轉載,尊重作者勞動成果,不得用於商業用途,侵權必究!!! 文章目錄 一、核心程式碼編寫 1、伺服器端程式的編寫 2、客戶端程式的編寫 3、測試列印輸出 二、系列文章(java網路程式設計) 上篇講了基於tcp的程式設計的一些基礎知識

java網路程式設計:8、基於TCP的socket程式設計簡單的socket通訊_一個客戶端

宣告:本教程不收取任何費用,歡迎轉載,尊重作者勞動成果,不得用於商業用途,侵權必究!!! 文章目錄 一、基於tcp的程式設計,就好像用電話進行交談一樣 二、在java中用於程式設計網路程式的類 三、套接字 + (輸出、輸入流) 1、伺服器程式編寫基本步驟: 2、客戶端程式

安全程式設計- Java集合類2

1.陣列(Array)和列表(ArrayList)有什麼區別?什麼時候應該使用Array而不是ArrayList?         Array可以包含基本資料型別和物件型別,ArrayList只能包含物件型別;      

Windows網路程式設計:IP Helper

IP Helper是Windows系統與IP配置和管理的重要介面,通過IP Helper 可以獲得很多跟網路配置相關的資訊。比如說本機IP、閘道器設定、網絡卡數量和連線資訊。 #include <windows.h> #include "iphlpapi.h" /* 全域

java-圖形使用者介面GUIAWT程式設計-整體思路與程式碼架構

1、整體思路   任何視窗都可以被分解成一個空的容器,容器中盛放了大量的基本元件,通過設定這些基本元件的大小、位置等屬性,就可以將該空的容器和基本元件組成一個整體的視窗。具體實現思路:   1)建立一個Frame頂層視窗   2)設定頂層視窗的佈局(如果需要的話):f.setLayout(new xxx

Python C/S 網路程式設計 三種方法實現天氣預報小程式

1. 首先明白下協議棧和庫的概念: 協議棧(Protocol Stack): 是指網路中各層協議的總和,其形象的反映了一個網路中檔案傳輸的過程:由上層協議到底層協議,再由底層協議到上層協議。 庫(Library):主要用來解析要使用的網路通訊協議,包含Python內建標準庫

Java併發程式設計Lock介面

一、Lock介面的引入 由於synchronized關鍵字有些缺陷,如無法響應中斷等,出現了Lock介面。相對於synchronized,Lock有如下補充: Lock可以響應中斷; Lock可以得知執行緒是否已經獲得鎖; Lock可以提供更為複雜的讀寫鎖,以應對讀寫同時存