2011-12-07 56 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

相关问题