【问题标题】:PHP curl Get request to retrieve JSON array but no responsePHP curl获取请求以检索JSON数组但没有响应
【发布时间】: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,但仍然无法正常工作

How can I emulate a get request exactly like a web browser?

GET JSON data using CURL

【问题讨论】:

  • 去掉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 永远不会返回一个数组,它只能返回两个东西:boolstring。它到底返回了什么?

标签: php json curl get-request no-response


【解决方案1】:

我知道 curl 有时会遇到 https 问题。这里有一些有用的帖子涵盖了该主题:

PHP CURL & HTTPS

How to send HTTPS posts using php

How to make an HTTPS request using cURL?

【讨论】:

  • 我一定会测试的,谢谢?
  • 您的 curl 脚本是否在您尝试从 curl 脚本调用的同一台服务器上运行?
  • 哦,我很确定你在哪里打电话,print_r($_GET);这应该在您尝试访问的 url 的脚本 (amitex.biz/delegateapi/createhotvoucher) 上,而不是在运行 curl 的页面上
  • 我正在尝试使用 curl 从我的服务器向另一个网站发送获取请求。所以,没有
猜你喜欢
  • 2016-06-11
  • 1970-01-01
  • 2017-10-06
  • 1970-01-01
  • 2019-09-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多