2011-12-07 60 views
21

我有用於從應用程序發送錯誤報告到服務器的HTML表單。我需要以編程方式模仿此行爲。相應的POST請求(或一系列請求)會是什麼樣子?如何在POST請求中模仿HTML表單提交?

<form name="bugreport" method="post" enctype="multipart/form-data" action="http://my-server.com/bugreport.php"> 
    <div name="SentData"> 
     <textarea name="logfile" class="UserVisible"></textarea><br> 
     <textarea name="configfile" class="UserVisible"></textarea><br> 
    </div> 
    <textarea name="usercomment" class="invisible"></textarea><br> 
    <input name="useremail" type="text" class="invisible"> 
    <input class="invisible" type="submit" value="Send"> 
</form> 

回答

39

POST請求由若干標題和請求主體組成。當您提交表單,所有表單域的瀏覽器URL encodes名稱和值,然後把它們放入請求主體的格式如下:

fieldname1=fieldvalue1&fieldname2=fieldvalue2 

即請求主體看起來像一個典型的查詢字符串。


這裏的請求可能是什麼樣子的表單:

POST /bugreport.php HTTP/1.1 
Host: www.example.com 
Content-Type: application/x-www-form-urlencoded 
Content-Length: [size of the request body] 

logfile=blabla&configfile=more+blabla&usercomment=hello&useremail= 

要確保你的程序符合什麼瀏覽器會做,你可以用Firefox發佈表單,然後檢查請求標題和正文使用Firebug的網絡面板。

+0

謝謝! FireBug真的很有幫助(但事實證明,一旦你知道原理,你就不需要它)。 –

+0

假設服務器**可以**處理它們,那麼HTTP **協議** **是否允許**「垃圾數據」用於內容類型的x-www-form-urlencoded?例如。 'logfileblabla&configfile ===== mo + uselo &&& useremail =&=&=&+' – Pacerier

+0

謝謝。這就是我一直在尋找的東西。 – Joey

相關問題