帮助,不知道我的HTTP多部分POST有什么问题

时间:2010-01-02 21:25:18

标签: http post multipartform-data

POST /upload HTTP/1.1
Host: assets.drop.io
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.10) Gecko/2
009042316 Firefox/3.0.10
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Content-Length: 5728
Content-Type: multipart/form-data; boundary=--------MalolHCBdarysNYMHZbIvjbD


--------MalolHCBdarysNYMHZbIvjbD
Content-Disposition: form-data; name="api_key"

0b8a12109c3a1bfc4ba94aec926e1f9cfd8bb6f0
--------MalolHCBdarysNYMHZbIvjbD
Content-Disposition: form-data; name="drop_name"

4pgvoxc
--------MalolHCBdarysNYMHZbIvjbD
Content-Disposition: form-data; name="version"

2.0
--------MalolHCBdarysNYMHZbIvjbD
Content-Disposition: form-data; name="rachel"; filename="rachel"
Content-Type: application/octet-stream

BMv¶
--------MalolHCBdarysNYMHZbIvjbD--

我得到的回应是:错误请求。在响应的HTML中有这样的:

:MultiPartParseError: bad content body:
'
----------MalolHCBdarysNYMHZbIvjbD' should == '----------MalolHCBdarysNYMHZbIvjbD
'></td></tr>

2 个答案:

答案 0 :(得分:3)

答案在你的问题中。回复说分隔符应为'----------MalolHCBdarysNYMHZbIvjbD '而不是' ----------MalolHCBdarysNYMHZbIvjbD'

查看前导和尾随空格。

答案 1 :(得分:3)

multipart/form-data message的原理图语法如下:

Content-Type: multipart/form-data; boundary=boundary

--boundary
Content-Disposition: form-data; name="field 1"

data 1
--boundary
Content-Disposition: form-data; name="field 2"

data 2
⋮
--boundary
Content-Disposition: form-data; name="field N"

data N
--boundary--

因此内部部分边界为--boundary--后跟边界值),最后一部分为--boundary----后跟边界值后跟{{ 1}})。

在您的情况下,您只是错过了前导--