多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內(nèi)最全I(xiàn)T社區(qū)平臺(tái) 聯(lián)系我們 | 收藏本站
阿里云優(yōu)惠2
您當(dāng)前位置:首頁 > php開源 > php教程 > Java與Http協(xié)議

Java與Http協(xié)議

來源:程序員人生   發(fā)布時(shí)間:2017-02-06 08:28:58 閱讀次數(shù):3095次

學(xué)習(xí)Java的同學(xué)注意了?。?! 
學(xué)習(xí)進(jìn)程中遇到甚么問題或想獲得學(xué)習(xí)資源的話,歡迎加入Java學(xué)習(xí)交換群,群號(hào)碼:183993990  我們1起學(xué)Java!


引言                                        

      http(超文本傳輸協(xié)議)是1個(gè)基于要求與響應(yīng)模式的、無狀態(tài)的、利用層的協(xié)議,常基于TCP的連接方式。HTTP協(xié)議的主要特點(diǎn)是:
     1.支持客戶/服務(wù)器模式。
     2.簡單快速:客戶向服務(wù)器要求服務(wù)時(shí),只需傳送要求方法和路徑。由于HTTP協(xié)議簡單,通訊速度很快。
     3.靈活:HTTP允許傳輸任意類型的數(shù)據(jù)對(duì)象。類型由Content-Type加以標(biāo)記。
     4.無連接:即每次連接只處理1個(gè)要求,處理完客戶的要求,并收到客戶的應(yīng)對(duì)后,即斷開連接。采取這類方式可以節(jié)省傳輸時(shí)間。
     5.無狀態(tài):無狀態(tài)是指協(xié)議對(duì)事務(wù)處理沒有記憶能力。 

     http1.0協(xié)議默許的是非持久連接, HTTP1.1默許的連接方式為持久連接。

非持久連接:每次服務(wù)器發(fā)出1個(gè)對(duì)象后,相應(yīng)的TCP連接就被關(guān)閉,也就是說每一個(gè)連接都沒有延續(xù)到可用于傳送其他對(duì)象。每一個(gè)TCP連接只用于傳輸1個(gè)要求消息和1個(gè)響應(yīng)消息。

持久連接:服務(wù)器在發(fā)出響應(yīng)后讓TCP連接繼續(xù)打開著。同1對(duì)客戶/服務(wù)器之間的后續(xù)要求和響應(yīng)可以通過這個(gè)連接發(fā)送。HTTP/1.1的默許模式使用帶流水線的持久連接。

 

1、HTTP協(xié)議詳解之要求

 

復(fù)制代碼
//要求行
POST /reg.jsp HTTP/ (CRLF)       

//消息報(bào)頭
Accept:image/gif,image/x-xbitmap,image/jpeg,application/x-shockwave-flash,application/vnd.ms-excel,application/vnd.ms-powerpoint,application/msword,*/* (CRLF)
Accept-Language:zh-cn (CRLF)
Accept-Encoding:gzip,deflate (CRLF)
If-Modified-Since:Wed,05 Jan 2007 11:21:25 GMT (CRLF)
If-None-Match:W/"80b1a4c018f3c41:8317" (CRLF)
User-Agent:Mozilla/4.0(compatible;MSIE6.0;Windows NT 5.0) (CRLF)
Host:www.guet.edu.cn (CRLF)
Connection:Keep-Alive (CRLF)
(CRLF)

//要求正文
user=jeffrey&pwd=1234 
復(fù)制代碼

     以上是http要求的3部:要求行、消息報(bào)頭、要求正文。

 

     要求行以1個(gè)方法符號(hào)開頭,以空格分開,后面隨著要求的URI和協(xié)議的版本,格式以下:

Method Request-URI HTTP-Version CRLF  
     其中 Method表示要求方法(如POST、GET、PUT、DELETE等);Request-URI是1個(gè)統(tǒng)1資源標(biāo)識(shí)符;HTTP-Version表示要求的HTTP協(xié)議版本;CRLF表示回車和換行。

 

2、HTTP協(xié)議詳解之響應(yīng)篇

復(fù)制代碼
//狀態(tài)行
HTTP/1.1 200 OK (CRLF)

//消息報(bào)頭
Cache-Control: private, max-age=30
Content-Type: text/html; charset=utf⑻
Content-Encoding: gzip
Expires: Mon, 25 May 2009 03:20:33 GMT
Last-Modified: Mon, 25 May 2009 03:20:03 GMT
Vary: Accept-Encoding
Server: Microsoft-IIS/7.0
X-AspNet-Version: 2.0.50727
X-Powered-By: ASP.NET
Date: Mon, 25 May 2009 03:20:02 GMT
Content-Length: 12173

//響應(yīng)正文
復(fù)制代碼

     HTTP響應(yīng)也是由3個(gè)部份組成,分別是:狀態(tài)行、消息報(bào)頭、響應(yīng)正文

     狀態(tài)行格式以下:
          HTTP-Version Status-Code Reason-Phrase CRLF
     其中,HTTP-Version表示服務(wù)器HTTP協(xié)議的版本;Status-Code表示服務(wù)器發(fā)回的響應(yīng)狀態(tài)代碼;Reason-Phrase表示狀態(tài)代碼的文本描寫。

常見狀態(tài)代碼、狀態(tài)描寫、說明:
200 OK      //客戶端要求成功
400 Bad Request  //客戶端要求有語法毛病,不能被服務(wù)器所理解
401 Unauthorized //要求未經(jīng)授權(quán),這個(gè)狀態(tài)代碼必須和WWW-Authenticate報(bào)頭域1起使用 
403 Forbidden  //服務(wù)器收到要求,但是謝絕提供服務(wù)
404 Not Found  //要求資源不存在,eg:輸入了毛病的URL
500 Internal Server Error //服務(wù)器產(chǎn)生不可預(yù)期的毛病
503 Server Unavailable  //服務(wù)器當(dāng)前不能處理客戶真?zhèn)€要求,1段時(shí)間后可能恢復(fù)正常

 

3、HTTP協(xié)議詳解之消息報(bào)頭

        HTTP消息由客戶端到服務(wù)器的要求和服務(wù)器到客戶真?zhèn)€響應(yīng)組成。要求消息和響應(yīng)消息都是由開始行(對(duì)要求消息,開始行就是要求行;對(duì)響應(yīng)消息,開始行就是狀態(tài)行),消息報(bào)頭(可選),空行(只有CRLF的行),消息正文(可選)組成。

        HTTP消息報(bào)頭包括普通報(bào)頭、要求報(bào)頭、響應(yīng)報(bào)頭、實(shí)體報(bào)頭。每個(gè)報(bào)頭域都是由名字+“:”+空格+值 組成,消息報(bào)頭域的名字是大小寫無關(guān)的。

1、要求報(bào)頭
     要求報(bào)頭允許客戶端向服務(wù)器端傳遞要求的附加信息和客戶端本身的信息。


經(jīng)常使用的要求報(bào)頭

Accept要求報(bào)頭域用于指定客戶端接受哪些類型的信息。
Accept-Charset要求報(bào)頭域用于指定客戶端接受的字符集。
Accept-Encoding要求報(bào)頭域類似于Accept,但是它是用于指定可接受的內(nèi)容編碼。
Accept-Language要求報(bào)頭域類似于Accept,但是它是用于指定1種自然語言。
Authorization要求報(bào)頭域主要用于證明客戶端有權(quán)查看某個(gè)資源。

Host要求報(bào)頭域主要用于指定被要求資源的Internet主機(jī)和端口號(hào),它通常從HTTP URL中提取出來的。User-Agent要求報(bào)頭域允許客戶端將它的操作系統(tǒng)、閱讀器和其它屬性告知服務(wù)器

2、響應(yīng)報(bào)頭

     響應(yīng)報(bào)頭允許服務(wù)器傳遞不能放在狀態(tài)行中的附加響應(yīng)信息,和關(guān)于服務(wù)器的信息和對(duì)Request-URI所標(biāo)識(shí)的資源進(jìn)行下1步訪問的信息。


經(jīng)常使用的響應(yīng)報(bào)頭
Location響應(yīng)報(bào)頭域用于重定向接受者到1個(gè)新的位置。Location響應(yīng)報(bào)頭域經(jīng)常使用在更換域名的時(shí)候。
Server響應(yīng)報(bào)頭域包括了服務(wù)器用來處理要求的軟件信息

3. 實(shí)體報(bào)頭

要求和響應(yīng)消息都可以傳送1個(gè)實(shí)體。


經(jīng)常使用的實(shí)體報(bào)頭
Content-Encoding唆使已被利用到實(shí)體正文的附加內(nèi)容的編碼。

Content-Language實(shí)體報(bào)頭域描寫了資源所用的自然語言。

Content-Length實(shí)體報(bào)頭域用于指明實(shí)體正文的長度,以字節(jié)方式存儲(chǔ)的10進(jìn)制數(shù)字來表示。
Content-Type實(shí)體報(bào)頭域用語指明發(fā)送給接收者的實(shí)體正文的媒體類型。
Last-Modified實(shí)體報(bào)頭域用于唆使資源的最后修改日期和時(shí)間。
Expires實(shí)體報(bào)頭域給出響應(yīng)過期的日期和時(shí)間。

 

4、補(bǔ)充

1、HTTP協(xié)議Content Lenth限制漏洞致使謝絕服務(wù)攻擊
使用POST方法時(shí),可以設(shè)置ContentLenth來定義需要傳送的數(shù)據(jù)長度,例如ContentLenth:999999999,在傳送完成前,內(nèi) 存不會(huì)釋放,攻擊者可以利用這個(gè)缺點(diǎn),連續(xù)向WEB服務(wù)器發(fā)送垃圾數(shù)據(jù)直至WEB服務(wù)器內(nèi)存耗盡。這類攻擊方法基本不會(huì)留下痕跡。
2、為了提高用戶使用閱讀器時(shí)的性能,現(xiàn)代閱讀器還支持并發(fā)的訪問方式,閱讀1個(gè)網(wǎng)頁時(shí)同時(shí)建立多個(gè)連接,以迅速取得1個(gè)網(wǎng)頁上的多個(gè)圖標(biāo),這樣能更快速完成全部網(wǎng)頁的傳輸。HTTP1.1中提供了這類延續(xù)連接的方式,而下1代HTTP協(xié)議:HTTP-NG更增加了有關(guān)會(huì)話控制、豐富的內(nèi)容協(xié)商等方式的支持,來提供更高效力的連接。

 

5.Java利用HTTP協(xié)議實(shí)現(xiàn)聯(lián)網(wǎng)和下載

Url的要求連接(Get方式)

復(fù)制代碼
String currentUrl=“http://www.myWeb.com/login.jsp?userName='Devin'&passWord='mypassword'”; //URL ?后面的內(nèi)容為HTTP要求的正文
URL url = new URL(currentUrl);
 
HttpURLConnection httpurlconnection = url.openConnection();
//下面的設(shè)置對(duì)應(yīng)HTTP要求中的消息報(bào)頭
httpurlconnection.setRequestProperty("User-Agent",CommonValues.User_Agent);
httpurlconnection.setRequestProperty("Accept",CommonValues.Accept);
httpurlconnection.setRequestProperty("Accept-Charset",CommonValues.Accept_Charset);
httpurlconnection.setRequestProperty("Accept-Language",CommonValues.Accept_Language);
httpurlconnection.setRequestProperty("Connection",CommonValues.Connection);
httpurlconnection.setRequestProperty("Keep-Alive",CommonValues.Keep_Alive);
httpurlconnection.setConnectTimeout(CommonValues.ConnectionTimeOut);
httpurlconnection.setReadTimeout(CommonValues.ReadTimeOut);
             
httpurlconnection.connect();
            
int responsecode = httpurlconnection.getResponseCode();
             
if(responsecode == HttpURLConnection.HTTP_OK) //對(duì)應(yīng)HTTP響應(yīng)中狀態(tài)行的響應(yīng)碼
{
  //操作要求流,這里對(duì)應(yīng)HTTP響應(yīng)中的響應(yīng)正文
}
             
if (httpurlconnection != null) 
{
   httpurlconnection.disconnect();
}

復(fù)制代碼

學(xué)習(xí)Java的同學(xué)注意了?。。?/span> 
學(xué)習(xí)進(jìn)程中遇到甚么問題或想獲得學(xué)習(xí)資源的話,歡迎加入Java學(xué)習(xí)交換群,群號(hào)碼:183993990  我們1起學(xué)Java!

生活不易,碼農(nóng)辛苦
如果您覺得本網(wǎng)站對(duì)您的學(xué)習(xí)有所幫助,可以手機(jī)掃描二維碼進(jìn)行捐贈(zèng)
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關(guān)閉
程序員人生
主站蜘蛛池模板: 国产h肉在线视频免费观看 国产h视频 | 久久久久久久国产精品视频 | 精品一区二区三区四区五区 | 波多野结衣中文一区 | 在线国产高清 | 秋霞午夜限制土鳖免费观看 | 在线观看的免费视频网站 | 国产在线精品福利一区二区三区 | 国产一区二区三区 | 国产成人亚洲精品无广告 | 欧美激情一区二区三区视频高清 | 国产番号 | 日本午夜在线观看 | jizzjizz之xxxx18 | 免费网站在线视频美女被 | 午夜影视福利 | 欧美一级高清在线观看 | 与黑人女人做爰的真实感受 | 国内一区二区三区精品视频 | 亚洲成a人v欧美综合天 | 欧美xxxx性free | 久久影视精品 | 国产精品国产三级在线高清观看 | 最近2019中文字幕最新 | 亚洲女人影院想要爱 | 2021国产精品系列一区二区 | 西欧free性video意大利 | 日本久久精品免视看国产成人 | 亚洲国产激情一区二区三区 | 欧美手机看片 | h网站免费看 | 免费av中文字幕 | 国产精品v欧美精品v日韩精品 | 国产女乱淫真高清免费视频 | 日本免费人做人一区在线观看 | 免费高清不卡毛片在线看 | 成人自拍小视频 | 久久免费观看国产精品 | 成人xxxxx| 一区二区在线精品免费视频 | 国产精品视频第一区二区 |