教育行業(yè)A股IPO第一股(股票代碼 003032)

全國咨詢/投訴熱線:400-618-4000

PHP培訓(xùn)之Post方式提交數(shù)據(jù)到服務(wù)器

更新時間:2016年06月30日14時26分 來源:PHP培訓(xùn)學(xué)院 瀏覽次數(shù):

我們已經(jīng)了解Get方式請求數(shù)據(jù)到服務(wù)器的編寫(參考:Get方式提交數(shù)據(jù)到服務(wù)器),下面我們來接著了解Post請求數(shù)據(jù)的方式。

1.抓取Post數(shù)據(jù)流

Post方式請求數(shù)據(jù)的原理是怎樣的?與Get方式請求數(shù)據(jù)的過程有什么區(qū)別呢?下面我們通過httpwatch來抓取post方式請求數(shù)據(jù)的過程。
  • web項目的jsp頁面中接著編寫post請求表單,效果如圖1-1所示:


圖1-1所示
圖1-1對應(yīng)的jsp頁面代碼如例1-1:
  1. jsp代碼



  • 在IE瀏覽器中訪問該登錄界面,當(dāng)以post方式點擊“提交查詢內(nèi)容”按鈕時,抓取數(shù)據(jù)流如圖1-2所示


圖1-2所示

1.Get請求和Post請求的區(qū)別

通過httpwatch抓取Post數(shù)據(jù)流(本例圖1-2)和Get數(shù)據(jù)流我們可以得出如下幾個結(jié)論:
  • Get向特定的資源發(fā)出請求,Post向指定資源提交數(shù)據(jù)進行處理請求(例如提交表單或者上傳文件)。數(shù)據(jù)被包含在請求體中。get和post只是一種傳遞數(shù)據(jù)的方式,get也可以把數(shù)據(jù)傳到服務(wù)器,它們的本質(zhì)都是發(fā)送請求和接收結(jié)果,只是組織格式和數(shù)據(jù)量上有差別,這個在http協(xié)議中有介紹。
  • Get是把參數(shù)拼接到URL路徑上傳到服務(wù)端,在瀏覽器中是可見的。Post是通過http Post機制,將表內(nèi)各個字段和對應(yīng)的內(nèi)容放在HTML HEADER內(nèi)一起傳送到ACTION屬性所指向的URL。
  • Get傳輸?shù)臄?shù)據(jù)較?。╤ttp協(xié)議規(guī)定最大的數(shù)據(jù)長度是4KB,但實際中最大的數(shù)據(jù)長度是2KB),Post傳遞數(shù)據(jù)較大。
  • Get安全性非常低,Post安全性相對較高。

2.Android編寫Post請求數(shù)據(jù)

在項目Get方式提交數(shù)據(jù)到服務(wù)器中我們已經(jīng)編寫了其對應(yīng)的請求頁面和請求響應(yīng)事件,下面是在該項目的基礎(chǔ)上編寫Post請求數(shù)據(jù)的頁面布局和請求響應(yīng)事件,具體操作如下:
  • 調(diào)整xml頁面布局,效果如圖1-3所示:


圖1-3所示
  • 在Activity中編寫“POST方式登錄“按鈕的點擊事件,具體代碼如例1-2:
例1-2



參考圖1-2的請求報文編寫Post請求的點擊事件,該方法和get請求的點擊事件基本上一致,紅色方框區(qū)域是兩種不同請求方式的區(qū)別。由于post請求參數(shù)是以流的形式提交到服務(wù)器的,所以在建立URL鏈接時該url路徑中無須拼接請求參數(shù)。調(diào)用setRequestProperty方法來設(shè)置請求參數(shù)的類型以及長度,并向服務(wù)端寫數(shù)據(jù)流。
運行程序,當(dāng)點擊“Post方式登錄”按鈕時,效果如圖1-4所示:

圖1-4所示
此時服務(wù)端控制臺打印出如圖1-5所示信息:

圖1-5所示

本文版權(quán)歸傳智播客PHP培訓(xùn)學(xué)院所有,歡迎轉(zhuǎn)載,轉(zhuǎn)載請注明作者出處。謝謝!
作者:傳智播客PHP培訓(xùn)學(xué)院
首發(fā):http://metathetuscanyresort.com/php/

0 分享到:
和我們在線交談!