如何在 PHP 中找到 cURL POST 请求的结果?

问题描述 投票:0回答:1

我是 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,但从我在答案中读到的内容来看,这个问题来自于我的代码中不存在的错误语法。

php curl post
1个回答
0
投票

看起来对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);
© www.soinside.com 2019 - 2024. All rights reserved.