1. 程式人生 > >Web Service進階 三 HTTP-GET HTTP-POST and SOAP的比較

Web Service進階 三 HTTP-GET HTTP-POST and SOAP的比較

XML Web Service 支援三種協議來與使用者交流資料。這三種協議分別是:

1.SOAPSimple Object Access Protocol

2.HTTP-GET

3.HTTP-POST

1.首先我們先來理解一下這三者的大概定義。

在這三種協議中,SOAPXML 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傳輸資料的時候。HTTPSOAP訊息壓縮,然後以它的形式進行網路傳輸。然而當我們談及在XML Web Service下使用HTTP-GETHTTP-POST的時候,我們實事上在談有關單獨使用

HTTP呼叫XML Web Service中的方法的能力,這裡我說的單獨使用,指的是不使用SOAP

HTTP中,GETPOST並不是一種協議,它們是可以用來與Web Service互動的幾種方法中其中兩種。然而,這二種方法傳送引數和資料的能力使它們變成了一種簡單的,非常適合用來呼叫XML Web Service的工具。

2HTTP-GETHTTP-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攻擊。

3HTTPSOAP的比較

    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.使用HTTPXML Web Service進行交流,不是一個agreed-to工業標準技術。雖然HTTP會在ASP.NET Web Application中與XML Web Service正常工作,但不保證它在其它的環境下正常工作。

再分享一下我老師大神的人工智慧教程吧。零基礎!通俗易懂!風趣幽默!還帶黃段子!希望你也加入到我們人工智慧的隊伍中來!https://www.cnblogs.com/captainbed

XML Web Service 支援三種協議來與使用者交流資料。這三種協議分別是:

1.SOAPSimple Object Access Protocol

2.HTTP-GET

3.HTTP-POST

1.首先我們先來理解一下這三者的大概定義。

在這三種協議中,SOAPXML 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傳輸資料的時候。HTTPSOAP訊息壓縮,然後以它的形式進行網路傳輸。然而當我們談及在XML Web Service下使用HTTP-GETHTTP-POST的時候,我們實事上在談有關單獨使用HTTP呼叫XML Web Service中的方法的能力,這裡我說的單獨使用,指的是不使用SOAP

HTTP中,GETPOST並不是一種協議,它們是可以用來與Web Service互動的幾種方法中其中兩種。然而,這二種方法傳送引數和資料的能力使它們變成了一種簡單的,非常適合用來呼叫XML Web Service的工具。

2HTTP-GETHTTP-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攻擊。

3HTTPSOAP的比較

    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.使用HTTPXML Web Service進行交流,不是一個agreed-to工業標準技術。雖然HTTP會在ASP.NET Web Application中與XML Web Service正常工作,但不保證它在其它的環境下正常工作。