Web Service進階 三 HTTP-GET HTTP-POST and SOAP的比較
1.SOAP:Simple Object Access Protocol
2.HTTP-GET
3.HTTP-POST
1.首先我們先來理解一下這三者的大概定義。
在這三種協議中,SOAP是XML Web Service最常用到的連線協議。與HTTP相比,SOAP顯的更為複雜,但卻擁有更強的接受能力。SOAP是一種以XML為基礎的協議,它提供一種將資料打包(Packaging)和編碼(Encoding)的方法,以用於網路的資料傳輸。任意一個使用者都可以使用SOAP協議與任何一個
HTTP(Hypertext Transfer Protocol) 已經是眾所周知的協議了,它是XML Web Service資料傳輸的標準,這包括了在使用SOAP傳輸資料的時候。HTTP將SOAP訊息壓縮,然後以它的形式進行網路傳輸。然而當我們談及在XML Web Service下使用HTTP-GET和HTTP-POST的時候,我們實事上在談有關單獨使用
在HTTP中,GET和POST並不是一種協議,它們是可以用來與Web Service互動的幾種方法中其中兩種。然而,這二種方法傳送引數和資料的能力使它們變成了一種簡單的,非常適合用來呼叫XML Web Service的工具。
2.HTTP-GET和HTTP-POST 的比較
Http get與post的區別
- 1.GET請求的資料會附在URL之後(就是把資料放置在HTTP協議頭中),以?分割URL和傳輸資料,引數之間以&相連,如: login.action?name=hyddd&password=idontknow&verify=%E4%BD%A0%E5%A5%BD。如果資料是英文字母/數字,原樣傳送,如果是空格,轉換為+,如果是中文/其他字元,則直接把字串用BASE64加密,得出如:%E4%BD%A0%E5%A5%BD,其中%XX中的XX為該符號以16進製表示的ASCII。
POST把提交的資料放置在是HTTP包體中。 - 2.GET方式提交的資料最多隻能是1024位元組(因為GET是通過URL提交資料,那麼GET可提交的資料量就跟URL的長度有直接關係了。而實際上,URL不存在引數上限的問題,HTTP協議規範沒有對URL長度進行限制。這個限制是特定的瀏覽器及伺服器對它的限制。IE對URL長度的限制是2083位元組(2K+35)。對於其他瀏覽器,如Netscape、FireFox等,理論上沒有長度限制,其限制取決於作業系統的支援。),理論上POST沒有限制,可傳較大量的資料。
- 3.在ASP中,服務端獲取GET請求引數用Request.QueryString,獲取POST請求引數用Request.Form。在JSP中,用request.getParameter(\”XXXX\”)來獲取,雖然jsp中也有request.getQueryString()方法,但使用起來比較麻煩,比如:傳一個test.jsp?name=hyddd&password=hyddd,用request.getQueryString()得到的是:name=hyddd&password=hyddd。
- 4.POST的安全性要比GET的安全性高。比如:通過GET提交資料,使用者名稱和密碼將明文出現在URL上,因為
- (1)登入頁面有可能被瀏覽器快取;
- (2)其他人檢視瀏覽器的歷史紀錄,那麼別人就可以拿到你的賬號和密碼了;
- (3)除此之外,使用GET提交資料還可能會造成Cross-site request forgery攻擊。
3.HTTP和SOAP的比較
HTTP-GET 和 HTTP-POST 提供了一個簡單的與XML Web Service互動的工具,與SOAP相比,它有以下幾點好處:
1.能夠非常容易的建立正確的HTTP-GET和 HTTP-POST訊息,當面向的客戶是不能使用SOAP的客戶時,HTTP-GET和 HTTP-POST是最好的選擇。
2.響應HTTP-GET和 HTTP-POST的訊息,並不需要複雜的XML處理。響應之中包括了XML,但它有一個簡單的框架並能夠輕易的利用一般的技術處理響應。這些特點使HTTP-GET和 HTTP-POST對於不支援XML的平臺來說,變的異常的有用。
3.HTTP-GET 和 HTTP-POST訊息比起SOAP訊息來說,更為簡單。這有利於提高整體的效能。
然而,有得必有失,有好必有壞,它們也存在不可忽略的缺點:
4.不能夠利用HTML呼叫XML Web Service中的以複雜資料型別為引數的方法。
5.你可以呼叫XML Web Service中返回值為複雜資料型別的方法,但是響應將僅包括複雜資料型別中各個區域中的名字/值,並且返回的值並沒有結構可言。你必須手動的將資料解壓縮到WSDL檔案。
6.在HTTP中,你不能使用reference進行引數的傳輸。
7.使用HTTP與XML Web Service進行交流,不是一個agreed-to工業標準技術。雖然HTTP會在ASP.NET Web Application中與XML Web Service正常工作,但不保證它在其它的環境下正常工作。
再分享一下我老師大神的人工智慧教程吧。零基礎!通俗易懂!風趣幽默!還帶黃段子!希望你也加入到我們人工智慧的隊伍中來!https://www.cnblogs.com/captainbed
XML Web Service 支援三種協議來與使用者交流資料。這三種協議分別是:1.SOAP:Simple Object Access Protocol
2.HTTP-GET
3.HTTP-POST
1.首先我們先來理解一下這三者的大概定義。
在這三種協議中,SOAP是XML Web Service最常用到的連線協議。與HTTP相比,SOAP顯的更為複雜,但卻擁有更強的接受能力。SOAP是一種以XML為基礎的協議,它提供一種將資料打包(Packaging)和編碼(Encoding)的方法,以用於網路的資料傳輸。任意一個使用者都可以使用SOAP協議與任何一個XML Web Service進行通訊,甚至於說這個XML Web Service不是建立在.NET平臺上的,比如說Java,我們都可以利用SOAP來進行資料傳輸。因此可見,SOAP也是Language Independent.(語言獨立性)。
HTTP(Hypertext Transfer Protocol) 已經是眾所周知的協議了,它是XML Web Service資料傳輸的標準,這包括了在使用SOAP傳輸資料的時候。HTTP將SOAP訊息壓縮,然後以它的形式進行網路傳輸。然而當我們談及在XML Web Service下使用HTTP-GET和HTTP-POST的時候,我們實事上在談有關單獨使用HTTP呼叫XML Web Service中的方法的能力,這裡我說的單獨使用,指的是不使用SOAP。
在HTTP中,GET和POST並不是一種協議,它們是可以用來與Web Service互動的幾種方法中其中兩種。然而,這二種方法傳送引數和資料的能力使它們變成了一種簡單的,非常適合用來呼叫XML Web Service的工具。
2.HTTP-GET和HTTP-POST 的比較
Http get與post的區別
- 1.GET請求的資料會附在URL之後(就是把資料放置在HTTP協議頭中),以?分割URL和傳輸資料,引數之間以&相連,如: login.action?name=hyddd&password=idontknow&verify=%E4%BD%A0%E5%A5%BD。如果資料是英文字母/數字,原樣傳送,如果是空格,轉換為+,如果是中文/其他字元,則直接把字串用BASE64加密,得出如:%E4%BD%A0%E5%A5%BD,其中%XX中的XX為該符號以16進製表示的ASCII。
POST把提交的資料放置在是HTTP包體中。 - 2.GET方式提交的資料最多隻能是1024位元組(因為GET是通過URL提交資料,那麼GET可提交的資料量就跟URL的長度有直接關係了。而實際上,URL不存在引數上限的問題,HTTP協議規範沒有對URL長度進行限制。這個限制是特定的瀏覽器及伺服器對它的限制。IE對URL長度的限制是2083位元組(2K+35)。對於其他瀏覽器,如Netscape、FireFox等,理論上沒有長度限制,其限制取決於作業系統的支援。),理論上POST沒有限制,可傳較大量的資料。
- 3.在ASP中,服務端獲取GET請求引數用Request.QueryString,獲取POST請求引數用Request.Form。在JSP中,用request.getParameter(\”XXXX\”)來獲取,雖然jsp中也有request.getQueryString()方法,但使用起來比較麻煩,比如:傳一個test.jsp?name=hyddd&password=hyddd,用request.getQueryString()得到的是:name=hyddd&password=hyddd。
- 4.POST的安全性要比GET的安全性高。比如:通過GET提交資料,使用者名稱和密碼將明文出現在URL上,因為
- (1)登入頁面有可能被瀏覽器快取;
- (2)其他人檢視瀏覽器的歷史紀錄,那麼別人就可以拿到你的賬號和密碼了;
- (3)除此之外,使用GET提交資料還可能會造成Cross-site request forgery攻擊。
3.HTTP和SOAP的比較
HTTP-GET 和 HTTP-POST 提供了一個簡單的與XML Web Service互動的工具,與SOAP相比,它有以下幾點好處:
1.能夠非常容易的建立正確的HTTP-GET和 HTTP-POST訊息,當面向的客戶是不能使用SOAP的客戶時,HTTP-GET和 HTTP-POST是最好的選擇。
2.響應HTTP-GET和 HTTP-POST的訊息,並不需要複雜的XML處理。響應之中包括了XML,但它有一個簡單的框架並能夠輕易的利用一般的技術處理響應。這些特點使HTTP-GET和 HTTP-POST對於不支援XML的平臺來說,變的異常的有用。
3.HTTP-GET 和 HTTP-POST訊息比起SOAP訊息來說,更為簡單。這有利於提高整體的效能。
然而,有得必有失,有好必有壞,它們也存在不可忽略的缺點:
4.不能夠利用HTML呼叫XML Web Service中的以複雜資料型別為引數的方法。
5.你可以呼叫XML Web Service中返回值為複雜資料型別的方法,但是響應將僅包括複雜資料型別中各個區域中的名字/值,並且返回的值並沒有結構可言。你必須手動的將資料解壓縮到WSDL檔案。
6.在HTTP中,你不能使用reference進行引數的傳輸。
7.使用HTTP與XML Web Service進行交流,不是一個agreed-to工業標準技術。雖然HTTP會在ASP.NET Web Application中與XML Web Service正常工作,但不保證它在其它的環境下正常工作。