【发布时间】:2021-11-21 10:04:11
【问题描述】:
我正在尝试使用 PHP 和 curl 发送一个 get 请求,以使用 rest API 检索 JSON 数组 当我通过在 chrome 地址栏中甚至在命令提示符或 PowerShell 中输入地址来测试它时,请求工作正常,但它使用 PHP curl 返回一个空数组,这是我的代码
<?php
$baseUrl="https://amitex.biz/delegateapi/createhotvoucher";
$myUrl=$baseUrl.'?'.http_build_query(array(
'SecurityCod'=>'19648A15',
'password'=>'xyziuqjq&',
'HotVoucherAmount'=>'1'
));
echo $myUrl;
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_URL,$myUrl);
$content = curl_exec($ch);
echo $content . "<br>";
print_r($_GET);
当我在浏览器中输入地址时,它会像这样返回 somting >
我尝试了以下解决方案,例如如何像浏览器一样发送获取请求以及如何使用 curl 检索 JSON,但仍然无法正常工作
【问题讨论】:
-
去掉
curl_setopt($ch, CURLOPT_URL,'$myUrl');的引号,写成curl_setopt($ch, CURLOPT_URL,$myUrl); -
没关系,我正在使用硬编码的 url 进行测试,只是忘记删除它们
-
不要使用echo进行调试,使用var_dump。 curl实际上返回bool(false)的可能性很大,但是echo无法显示bool(false),这就是var_dump的用武之地。还要检查curl_errno($ch)和curl_error($ch),他们说什么?
-
添加 curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);和 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);但是,您应该在使其生效时添加适当的证书。
-
@NeoMn curl_exec 永远不会返回一个数组,它只能返回两个东西:
bool和string。它到底返回了什么?
标签: php json curl get-request no-response