繁体   English   中英

PHP从端点返回“null”

[英]Returning "null" from endpoint by PHP

朋友们,我有返回端点https://api.bcb.gov.br/dados/serie/bcdata.sgs.4390/dados以供 PHP 返回的问题。

在 POSTMAN 中它工作正常,浏览器也正常。

问题出在哪儿?

$curl = curl_init();
curl_setopt_array($curl, array(
  CURLOPT_URL => "https://api.bcb.gov.br/dados/serie/bcdata.sgs.4390/dados",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 0,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "GET",
  CURLOPT_HTTPHEADER => array(
    "Authorization: Basic YXRoZW5hc3g6QHRoZW5hc1g=",
    "Cookie: cookie_p=!scLarubhqjnExZBkmDwhOLi4iPSDyREMccf7/KajFSUEMTzB5Ayusi5+tGpJHXS2/gAiOR1B3EXRVmA=; TS01799025=0198c2d644c9f142b44ab6191be6416ca09c966281b4eac2e338095e981a329beb85787a3328474ab13c2f09d86baa6627e734caa34ceb49d8e51f2f880c249de254c0daa1"
  ),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;

谢谢

从邮递员和浏览器它正在工作,因为您正在通过 https 安全连接加载代码和文件。 如果您在 http 或 localhost 上执行此操作,则必须添加CURLOPT_SSL_VERIFYPEER => falseCURLOPT_USERAGENT => 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; .NET CLR 1.1.4322)'来模拟浏览器并返回结果。 但是使用CURLOPT_SSL_VERIFYPEER => false并不是很聪明,会让你不安全,更多关于该选项和其他 curl 选项,你可以在这里阅读https://curl.haxx.se/libcurl/c/curl_easy_setopt.html#CURLOPTSSLVERIFYPEER

这是我在 localhost 上测试过的有效代码

$curl = curl_init();
curl_setopt_array($curl, array(
   CURLOPT_URL => "https://api.bcb.gov.br/dados/serie/bcdata.sgs.4390/dados",
   CURLOPT_RETURNTRANSFER => true,
   CURLOPT_ENCODING => "",
   CURLOPT_MAXREDIRS => 10,
   CURLOPT_TIMEOUT => 0,
   CURLOPT_FOLLOWLOCATION => true,
   CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
   CURLOPT_CUSTOMREQUEST => "GET",
   CURLOPT_HTTPHEADER => array(
      "Authorization: Basic YXRoZW5hc3g6QHRoZW5hc1g=",
      "Cookie: cookie_p=!scLarubhqjnExZBkmDwhOLi4iPSDyREMccf7/KajFSUEMTzB5Ayusi5+tGpJHXS2/gAiOR1B3EXRVmA=; TS01799025=0198c2d644c9f142b44ab6191be6416ca09c966281b4eac2e338095e981a329beb85787a3328474ab13c2f09d86baa6627e734caa34ceb49d8e51f2f880c249de254c0daa1"
   ),
   // those 2 lines added
   CURLOPT_USERAGENT => 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; .NET CLR 1.1.4322)',
   CURLOPT_SSL_VERIFYPEER => false,
));
$response = curl_exec($curl);
curl_close($curl);

// decode response 
$obj = json_decode($response);
// output result
var_dump($obj);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM