【发布时间】:2012-12-27 14:11:22
【问题描述】:
我正在尝试使用 POST 上传文件
这是我的要求:
POST /upload.php HTTP/1.1
Host: localhost
Content-Type: multipart/form-data; boundary=---------------------------552335022525
Content-Length: 192
-----------------------------552335022525
Content-Disposition: form-data; name="userfile"; filename="12.txt"
Content-Type: text/plain
blabla
-----------------------------552335022525--
使用 HTTP live headers firefox 插件一切正常
但是当将它放入一个 char *buffer 并使用 winsocksapi 发送时,我得到 400 Bad Request 错误
【问题讨论】:
-
你是怎么把它放到
char*缓冲区的? -
char *sendBuffer="整个事情";
-
在使用
send()的时候,有注意返回值吗?send()可以发送比请求更少的字节,所以你必须循环它。此外,如果您使用的是阻塞套接字,您是否注意返回码,尤其是 WSAEWOULDBLOCK?请显示您的实际发送代码。顺便说一句,您在Content-Length标头和第一条边界线之间缺少所需的 CRLF。 HTTP 标头由 2 个 CRLF 终止。 -
@bit8bug,但字符常量中不能有换行符。这就是我想看到的。另外,您可以为您使用的语言添加标签吗?
-
@DarkFalcon:您可以在字符串常量中使用换行符,使用
\r和\n。
标签: c http-headers http-post winsock