获取Curl生成的POST流示例,以帮助移植到c#
本文关键字:帮助 Curl POST 获取 | 更新日期: 2023-09-27 18:12:05
我的任务是将以下PHP代码块转换为执行HTTP多部分帖子。我了解HTTP发布的基础知识(我的代码已经发布了一些JSON),并且我已经阅读了多部分请求的基础知识。然而,Curl显然在幕后做了大量的腿部工作,这些工作将不得不转换为。net流写入。然而,对于这些事情,细节决定成败。
不熟悉Curl和作为一个PHP新手,有没有一种方法,使用代码,看到最后发送的请求与curl_exec?有一个真实的例子会很有帮助。事实上,我对简单的字段很满意-每个字段都有单独的边界/部分。JPEG图像编码对我来说比较棘手。我可以设置一个PHP环境并调试它吗?我推断Curl是一种web客户端,也就是说,它做了很多没有用户界面的web浏览器所做的事情。
<?php
function AddPhoto( $account, $password, $pubId, $photoId, $owner, $pubDate, $attribution, $caption, $keywords, $photoPath )
{
// set up the arguments of the multipart form data
$args = array( 'Method' => 'AddPhoto', 'Account' => 'Test', 'Password' => 'pw',
'PubID' => 'WOR/1002',
'PhotoID' => '12345',
'Owner' => 'me',
'PubDate' => '2015-07-01',
'Attribution' => '',
'Caption' => 'the front door',
'Keywords' => 'Pub',
'Photo' => new CurlFile( $photoPath, // path to the file
'image/jpeg', // MIME type of the file
'image' // file name (not used)
)
);
// create a curl request object
$ch = curl_init();
curl_setopt ($ch, CURLOPT_URL, 'http://dev.camrapubs.org.uk/simon/PubDatabase/API2.php');
curl_setopt( $ch, CURLOPT_POST, 1 ); // use the POST method
curl_setopt( $ch, CURLOPT_POSTFIELDS, $args ); // supply the arguments for the POST
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1 ); // ensure curl_exec returns the result rather than echoing it
// make the call and get the result
return curl_exec($ch);
}
$result = AddPhoto( ‘xx', ‘xx', 'WOR/1002', '12345', 'me', '2015-07-01', 'copyleft', 'The front door', 'Pub', 'sample.jpg' );
echo 'result = ', $result, PHP_EOL;
?>
Rob,
也许你应该看看这个?
Php -调试Curl
祝你成功:-)
该链接给出了答案的第一部分,因为您可以使用详细选项和错误输出管道调试Curl请求。
然而,遗憾的是,Curl中的verbose选项没有在日志中显示多部分请求,所以我正在寻找的关键位丢失了。
但是这个链接确实把我带到了另一条尝试捕获低级请求的路线上。Wireshark有点低级,但另一次跳转让我发现了非常有用的Charles Proxy实用程序。如果你需要调试HTTP post请求,这是一个很棒的软件。
您必须手动配置您的CURL代码来使用查尔斯代理,使用以下行:
curl_setopt( $ch, CURLOPT_PROXY, "127.0.0.1:8888");
但是一旦配置好了,您就可以在一组优秀的Charles诊断窗口中浏览请求和响应。
这节省了我数小时的猜测。我可以看到POST数据的所有荣耀