導航:首頁 > 解決方法 > 請求與響應的雙向檢測方法

請求與響應的雙向檢測方法

發布時間:2022-06-01 22:57:17

A. 如何針對http的get請求進行處理與響應

1、HTTP請求概述

在前面有一篇文章對HTTP協議有詳細的描述,這里就不再過多的做說明,只是簡單的作為這篇文章的引子。

HTTP協議又被稱為超文本傳輸協議,它的的設計目的是保證客戶機與伺服器之間的通信。HTTP 的工作方式是客戶端與伺服器之間的請求-應答協議。在客戶端和伺服器之間進行請求-響應時,有兩個最基本的請求方式:GET 和 POST。

其中,GET請求表示從指定的資源請求數據,POST請求表示向指定的資源提交要被處理的數據。

2、HTTP請求格式

在HTTP請求中,首先是請求行,注意這里的請求行一定要放在最前面;其次,是請求頭,英文表示為header;然後會空一行,緊接著就可以是請求的具體內容了,一般稱之為請求體,request-body。給出一個圖示如下:

3、GET請求與POST請求對比

GET請求與POST請求有一些異同點,主要有以下幾點問題:

(1)、GET請求和POST請求都是客戶端與伺服器之間交互,請求--應答模式的協議

(2)、GET請求是通過URL直接請求數據,數據信息可以在URL中直接看到,比如瀏覽器訪問;而POST請求是放在請求頭中的,我們是無法直接看到的;

(3)、GET提交有數據大小的限制,一般是不超過1024個位元組,而這種說法也不完全准確,HTTP協議並沒有設定URL位元組長度的上限,而是瀏
覽器做了些處理,所以長度依據瀏覽器的不同有所不同;POST請求在HTTP協議中也沒有做說明,一般來說是沒有設置限制的,但是實際上瀏覽器也有默認
值。總體來說,少量的數據使用GET,大量的數據使用POST。

(4)、GET請求因為數據參數是暴露在URL中的,所以安全性比較低,比如密碼是不能暴露的,就不能使用GET請求;POST請求中,請求參數信息是放在請求頭的,所以安全性較高,可以使用。在實際中,涉及到登錄操作的時候,盡量使用HTTPS請求,安全性更好。

下面給出一副圖示,說明一下HTTP中GET與POST請求的差異:

4、使用步驟:

在Android中使用HTTP請求,主要步驟如下:

(1)、實例化一個HttpGet(或HttpPost)對象,將請求的URL地址通過構造方法傳給HttpGet(或HttpPost)對象;
(2)、使用DefaultHttpClient類的execute方法發送GET或POST 請求,並返回HttpResponse對象;
(3)、通過HttpResponse介面的getEntity方法返回響應信息。

5、實例代碼

給出一個在實際應用中的一個POST請求的代碼片段:

[java] view plain print?
params = new LinkedList<BasicNameValuePair>();
params.add(new BasicNameValuePair("param1", "Post方法"));
params.add(new BasicNameValuePair("param2", "第二個參數"));

try {
HttpPost post = new HttpPost(baseUrl);
post.setEntity(new UrlEncodedFormEntity(params, "utf-8")); //將參數填入POST Entity中

HttpResponse response = httpClient.execute(post); //執行POST方法
resCode = response.getStatusLine().getStatusCode()); //獲取響應碼
result = EntityUtils.toString(response.getEntity(), "utf-8")); //獲取響應內容

} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

6、HTTP請求狀態碼意義

HTTP請求中,主要有這樣幾個類型:1XX:表示信息提示,2XX:表示成功,3XX:表示重定向,4XX:表示客戶端請求錯誤,5XX:表示伺服器錯誤。常見的幾個HTTP請求狀態碼意義如下:

200 OK: 找到了該資源,並且一切正常。
304 NOT MODIFIED: 該資源在上次請求之後沒有任何修改。這通常用於瀏覽器的緩存機制。
401 UNAUTHORIZED: 客戶端無權訪問該資源。這通常會使得瀏覽器要求用戶輸入用戶名和密碼,以登錄到伺服器。
403 FORBIDDEN: 客戶端未能獲得授權。這通常是在401之後輸入了不正確的用戶名或密碼。
404 NOT FOUND: 在指定的位置不存在所申請的資源。
505 NOT SUPPORTED:伺服器不支持請求中所指明的HTTP版本

B. 一次完整的HTTP請求與響應涉及了哪些知識

當瀏覽器向Web伺服器發出請求時,它向伺服器傳遞了一個數據塊,也就是請求信息,HTTP請求信息由3部分組成:
l 請求方法URI協議/版本
l 請求頭(Request Header)
l 請求正文
下面是一個HTTP請求的例子:
GET/sample.jspHTTP/1.1

Accept:image/gif.image/jpeg,*/*
Accept-Language:zh-cn
Connection:Keep-Alive
Host:localhost
User-Agent:Mozila/4.0(compatible;MSIE5.01;Window NT5.0)
Accept-Encoding:gzip,deflate

username=jinqiao&password=1234
(1)請求方法URI協議/版本
請求的第一行是「方法URL議/版本」:GET/sample.jsp HTTP/1.1
以上代碼中「GET」代表請求方法,「/sample.jsp」表示URI,「HTTP/1.1代表協議和協議的版本。
根據HTTP標准,HTTP請求可以使用多種請求方法。例如:HTTP1.1目前支持7種請求方法:GET、POST、HEAD、OPTIONS、PUT、DELETE和TARCE。
GET 請求獲取由Request-URI所標識的資源。
POST 在Request-URI所標識的資源後附加新的數據。
HEAD 請求獲取由Request-URI所標識的資源的響應消息報頭。
OPTIONS 請求查詢伺服器的性能,或查詢與資源相關的選項和需求。
PUT 請求伺服器存儲一個資源,並用Request-URI作為其標識。
DELETE 請求伺服器刪除由Request-URI所標識的資源。
TRACE 請求伺服器回送收到的請求信息,主要用語測試或診斷。
在Internet應用中,最常用的方法是GET和POST。
URI完整地指定了要訪問的網路資源,通常只要給出相對於伺服器的根目錄的相對目錄即可,因此總是以「/」開頭,最後,協議版本聲明了通信過程中使用HTTP的版本。

(2)請求頭(Request Header)
請求頭包含許多有關的客戶端環境和請求正文的有用信息。例如,請求頭可以聲明瀏覽器所用的語言,請求正文的長度等。
Accept:image/gif.image/jpeg.*/*
Accept-Language:zh-cn
Connection:Keep-Alive
Host:localhost
User-Agent:Mozila/4.0(compatible:MSIE5.01:Windows NT5.0)
Accept-Encoding:gzip,deflate.

(3)請求正文
請求頭和請求正文之間是一個空行,這個行非常重要,它表示請求頭已經結束,接下來的是請求正文。請求正文中可以包含客戶提交的查詢字元串信息:
username=jinqiao&password=1234
在以上的例子的HTTP請求中,請求的正文只有一行內容。當然,在實際應用中,HTTP請求正文可以包含更多的內容。
HTTP請求方法我這里只討論GET方法與POST方法
l GET方法
GET方法是默認的HTTP請求方法,我們日常用GET方法來提交表單數據,然而用GET方法提交的表單數據只經過了簡單的編碼,同時它將作為URL的一部分向Web伺服器發送,因此,如果使用GET方法來提交表單數據就存在著安全隱患上。例如
http://127.0.0.1/login.jsp?Name=zhangshi&Age=30&Submit=%cc%E+%BD%BB
從上面的URL請求中,很容易就可以辯認出表單提交的內容。(?之後的內容)另外由於GET方法提交的數據是作為URL請求的一部分所以提交的數據量不能太大

l POST方法
POST方法是GET方法的一個替代方法,它主要是向Web伺服器提交表單數據,尤其是大批量的數據。POST方法克服了GET方法的一些缺點。通過POST方法提交表單數據時,數據不是作為URL請求的一部分而是作為標准數據傳送給Web伺服器,這就克服了GET方法中的信息無法保密和數據量太小的缺點。因此,出於安全的考慮以及對用戶隱私的尊重,通常表單提交時採用POST方法。
從編程的角度來講,如果用戶通過GET方法提交數據,則數據存放在QUERY_STRING環境變數中,而POST方法提交的數據則可以從標准輸入流中獲取。

http響應格式
HTTP應答與HTTP請求相似,HTTP響應也由3個部分構成,分別是:
l 狀態行
l 響應頭(Response Header)
l 響應正文
在接收和解釋請求消息後,伺服器會返回一個HTTP響應消息。
狀態行由協議版本、數字形式的狀態代碼、及相應的狀態描述,各元素之間以空格分隔。
格式: HTTP-Version Status-Code Reason-Phrase CRLF
例如: HTTP/1.1 200 OK \r\n

狀態代碼:
狀態代碼由3位數字組成,表示請求是否被理解或被滿足。
狀態描述:
狀態描述給出了關於狀態代碼的簡短的文字描述。
狀態代碼的第一個數字定義了響應的類別,後面兩位沒有具體的分類。
第一個數字有五種可能的取值:
- 1xx: 指示信息—表示請求已接收,繼續處理。
- 2xx: 成功—表示請求已經被成功接收、理解、接受。
- 3xx: 重定向—要完成請求必須進行更進一步的操作。
- 4xx: 客戶端錯誤—請求有語法錯誤或請求無法實現。
- 5xx: 伺服器端錯誤—伺服器未能實現合法的請求。
狀態代碼 狀態描述 說明
200 OK 客戶端請求成功
400 Bad Request 由於客戶端請求有語法錯誤,不能被伺服器所理解。
401 Unauthonzed 請求未經授權。這個狀態代碼必須和WWW-Authenticate報頭域一起使用
403 Forbidden 伺服器收到請求,但是拒絕提供服務。伺服器通常會在響應正文中給出不提供服務的原因
404 Not Found 請求的資源不存在,例如,輸入了錯誤的URL。
500 Internal Server Error 伺服器發生不可預期的錯誤,導致無法完成客戶端的請求。
503 Service Unavailable 伺服器當前不能夠處理客戶端的請求,在一段時間之後,伺服器可能會恢復正常。

響應頭
響應頭可能包括:
Location:
Location響應報頭域用於重定向接受者到一個新的位置。例如:客戶端所請求的頁面已不存在原先的位置,為了讓客戶端重定向到這個頁面新的位置,服務 器端可以發回Location響應報頭後使用重定向語句,讓客戶端去訪問新的域名所對應的伺服器上的資源。當我們在JSP中使用重定向語句的時候,伺服器 端向客戶端發回的響應報頭中,就會有Location響應報頭域。
Server:
Server響應報頭域包含了伺服器用來處理請求的軟體信息。它和User-Agent請求報頭域是相對應的,前者發送伺服器端軟體的信息,後者發送客戶 端軟體(瀏覽器)和操作系統的信息。下面是Server響應報頭域的一個例子:Server: Apache-Coyote/1.1
WWW-Authenticate:
WWW-Authenticate響應報頭域必須被包含在401(未授權的)響應消息中,這個報頭域和前面講到的Authorization請求報頭域是 相關的,當客戶端收到401響應消息,就要決定是否請求伺服器對其進行驗證。如果要求伺服器對其進行驗證,就可以發送一個包含了 Authorization報頭域的請求,下面是WWW-Authenticate響應報頭域的一個例子:WWW-Authenticate: Basic realm="Basic Auth Test!"
從這個響應報頭域,可以知道伺服器端對我們所請求的資源採用的是基本驗證機制。
Content-Encoding:
Content-Encoding實體報頭域被使用作媒體類型的修飾符,它的值指示了已經被應用到實體正文的附加內容編碼,因而要獲得Content- Type報頭域中所引用的媒體類型,必須採用相應的解碼機制。Content-Encoding主要用語記錄文檔的壓縮方法,下面是它的一個例子: Content-Encoding: gzip。如果一個實體正文採用了編碼方式存儲,在使用之前就必須進行解碼。
Content-Language:
Content-Language實體報頭域描述了資源所用的自然語言。Content-Language允許用戶遵照自身的首選語言來識別和區分實體。 如果這個實體內容僅僅打算提供給丹麥的閱讀者,那麼可以按照如下的方式設置這個實體報頭域:Content-Language: da。
如果沒有指定Content-Language報頭域,那麼實體內容將提供給所以語言的閱讀者。
Content-Length:
Content-Length實體報頭域用於指明正文的長度,以位元組方式存儲的十進制數字來表示,也就是一個數字字元佔一個位元組,用其對應的ASCII碼存儲傳輸。
要注意的是:這個長度僅僅是表示實體正文的長度,沒有包括實體報頭的長度。
Content-Type
Content-Type實體報頭域用語指明發送給接收者的實體正文的媒體類型。例如:
Content-Type: text/html;charset=ISO-8859-1
Content-Type: text/html;charset=GB2312
Last-Modified
Last-Modified實體報頭域用於指示資源最後的修改日期及時間。
Expires
Expires實體報頭域給出響應過期的日期和時間。通常,代理伺服器或瀏覽器會緩存一些頁面。當用戶再次訪問這些頁面時,直接從緩存中載入並顯示給用 戶,這樣縮短了響應的時間,減少伺服器的負載。為了讓代理伺服器或瀏覽器在一段時間後更新頁面,我們可以使用Expires實體報頭域指定頁面過期的時 間。當用戶又一次訪問頁面時,如果Expires報頭域給出的日期和時間比Date普通報頭域給出的日期和時間要早(或相同),那麼代理伺服器或瀏覽器就 不會再使用緩存的頁面而是從伺服器上請求更新的頁面。不過要注意,即使頁面過期了,也並不意味著伺服器上的原始資源在此時間之前或之後發生了改變。
Expires實體報頭域使用的日期和時間必須是RFC 1123中的日期格式,例如:
Expires: Thu, 15 Sep 2005 16:00:00 GMT
HTTP1.1的客戶端和緩存必須將其他非法的日期格式(也包括0)看作已過期。例如,為了讓瀏覽器不要緩存頁面,我們也可以利用Expires實體報頭 域,設置它的值為0,如下(JSP):response.setDateHeader("Expires",0);

C. 如何判斷fiddler請求和響應

原理: 在PC上啟動fiddler,將手持設備的網路代理改成fiddler。這樣所有的請求和響應都經過fiddler,自然也就能捕獲到了。 1、啟動fiddler查看其代理監聽埠 下圖可以看到fiddler埠是8888 如果需要捕獲https請選中相應的checkbox

D. 怎麼查詢http請求是否有響應

Http(Hyper Text Transfer Protocal)是超文本傳輸協議,它用於網頁間傳送數據,http採用的是請求、響應模型,也就是說瀏覽器和Web伺服器之間的交互(http事務)包括瀏覽器發起的一個請求和隨後伺服器返回的一個響應。請求和響應本質上是文本流,客戶端和伺服器端把它們解釋為首部和緊隨其後的主體部分。
一個http請求主要由首部信息和可能包含一些數據或參數的主體部分組成。
一個http響應通常包含首部信息和返回頁面的html標記。
那麼我們如何查看http首部信息呢?firefox提供了一個插件LiveHTTPHeaders,它的功能是記錄瀏覽器獲得http流量,以及當前的請求和響應首部信息,GET和POST方法的查詢字元也被記錄下來,但是響應的內容不會被記錄。

E. ping是如何將受到的響應與請求信息配對

ping是如何將受到的響應與請求信息配對:這個是在ICMP消息里,步驟:

1 識別PING 在IP報頭偏移9位元組,協議標識為1
2 ping的源ip和目的ip在12位元組和16位元組
3 ping是ICMP的一種類型,type=8 發送 type=0 接受 偏移20位元組
4 標識ping是否是一對消息看ID,Identifier (BE),在偏移24,25位元組
5 SN是累計數,一對請求和響應該值也是相同的
建議做個試驗就清楚了

F. http請求和響應

拓展資料:HTTP請求與響應

G. java中如何判斷發送的請求是否得到響應

用filter
請求進出都要經過filter的
public void doFilter(ServletRequest req, ServletResponse resp,FilterChain fchain) throws IOException,ServletException
{
HttpServletRequest request=(HttpServletRequest)req;
System.out.print("請求");
fchain.doFilter(req,resp);
System.out.print("響應");

}

閱讀全文

與請求與響應的雙向檢測方法相關的資料

熱點內容
衛衣領的計算方法 瀏覽:726
嬰兒慢性喉炎最佳治療方法 瀏覽:819
緩解肝氣郁結的鍛煉方法 瀏覽:84
廢舊手機提煉黃金的比較簡單方法 瀏覽:435
真龍頭的鑒別方法 瀏覽:850
給貓洗澡的方法有哪些 瀏覽:932
介紹姓氏的方法有哪些陳 瀏覽:442
快速求質因數的方法 瀏覽:702
項目管理涉及哪些工具技術和方法 瀏覽:654
牙根腫痛怎麼治療方法 瀏覽:817
葉輪出口面積的計算方法 瀏覽:20
08298的簡便計算方法 瀏覽:535
特戊酸水分的檢測方法 瀏覽:155
美容如何提高顧客進店的方法 瀏覽:957
電纜壓銅鼻子有哪些方法 瀏覽:538
exagear模擬器使用方法 瀏覽:994
澄粉涼粉家庭版簡單製作方法 瀏覽:258
有步驟有計劃有方法開展 瀏覽:464
熏蒸有哪些方法 瀏覽:281
櫻桃如何施肥方法 瀏覽:698