我是 PHP 新手,正在尝试用 PHP 编写一个简单的 cURL POST 请求。感谢 PHP Pot,我找到了以下可以使用的代码(仅修改我的用例的 URL 和数据)。
$url = 'https://api.groupme.com/v3/bots/post';
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
$data = "bot_id=SECRET&text=HI";
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
$result = curl_exec($curl);
curl_close($curl);
我正在我的 PC 上的本地交互式 shell 中测试此代码,然后将其上传到服务器。
遗憾的是,目标服务器没有像我希望的那样响应,所以我目前正在尝试查看 POST 数据。
官方PHP文档推荐使用curl_getinfo(),但这就是我遇到重大错误的地方。
问题
当我添加行时
curl_getinfo($curl);
我收到错误消息。
PHP 警告:未捕获类型错误:curl_getinfo():参数 #1 ($handle) 必须是 CurlHandle 类型,在 php shell 代码中给出的字符串:1
但是当我改为添加该行时
echo $curl;
我收到错误消息。
PHP 警告:未捕获错误:无法获取类 CurlHandle 的对象 在 php shell 代码中转换为字符串:1
这对我来说似乎很奇怪。当我将它称为 CurlHandle 对象时,PHP 认为它是一个字符串,反之亦然。我将不胜感激任何帮助我完成这项工作的指导!我没有尝试太多,因为 PHP 及其库不熟悉。有 this StackOverflow post,但从我在答案中读到的内容来看,这个问题来自于我的代码中不存在的错误语法。
看起来对curl_getinfo()的使用方式存在误解。您遇到的错误是因为curl_getinfo()需要一个CurlHandle对象,但您直接传递cURL资源。
$url = 'https://api.groupme.com/v3/bots/post';
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
$data = "bot_id=SECRET&text=HI";
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
$result = curl_exec($curl);
if ($result === false) {
echo 'Curl error: ' . curl_error($curl);
}
$info = curl_getinfo($curl);
print_r($info);
curl_close($curl);