【发布时间】:2010-11-01 07:24:26
【问题描述】:
我正在尝试将文件和其他 POST 变量发送到我服务器上的 PHP 脚本。 Google 上没有好的资源,我发现的代码示例也不起作用。最好不要使用 cURL。
【问题讨论】:
-
你在为什么平台编码?
我正在尝试将文件和其他 POST 变量发送到我服务器上的 PHP 脚本。 Google 上没有好的资源,我发现的代码示例也不起作用。最好不要使用 cURL。
【问题讨论】:
我会说自己动手。它不是太复杂。
在Wireshark 中捕获从浏览器发送的HTTP 帖子,并根据需要使用spec 作为指导进行逆向工程。 (请参阅下面 Andreas Magnusson 的回答,了解更多相关规格。)
我个人会推荐这种方法来学习协议,而不仅仅是纯粹的规范。仅从规范中学习东西非常困难。我宁愿探索已知 http 客户端的不同行为,并尝试以规范为指导来弄清楚事情是如何工作的。
在您熟悉 HTTP 后,相应地通过套接字格式化和发送数据。
另外,如果您不熟悉套接字编程,请查看Beej's guide to socket programming。
【讨论】:
只需几个资源就可以很容易地自己动手
这里是an example of a GET request via ASIO(Boost 中的 C++ 网络库)
这里是the HTTP protocol made really easy
GET 请求是您查看网站上任何页面的方式。使用该代码,您可以下载任何页面并将其作为原始文本获取。如您所见,它向服务器发送了一个 GET 标头。正如that HTTP protocol page 中所述,POST request 看起来像这样
POST /path/script.cgi HTTP/1.0 From:
frog@jmarshall.com User-Agent:
HTTPTool/1.0 Content-Type:
application/x-www-form-urlencoded
Content-Length: 32
home=Cosby&favorite+flavor=flies
【讨论】:
另一个(更快捷)的解决方案是使用实用程序,通过 system() 或类似的调用。 例如 wget 实用程序有一个 --post-file 选项。
【讨论】:
如果您要自己推出,则需要相关的RFC for HTTP file uploading(谷歌搜索“rfc http 文件上传”会产生相同的结果)。该 RFC 还展示了如何处理混合文件和其他 FORM 数据(或 POST 变量)。问题当然是您可能还想阅读MIME RFC...
【讨论】:
【讨论】: