gpt4 book ai didi

php curl_exec 将响应返回为 1

转载 作者:搜寻专家 更新时间:2023-10-31 21:21:25 26 4
gpt4 key购买 nike

我正在尝试使用 curl 作为以下代码片段。我已经尝试了所有可以搜索类似问题的选项。已经添加了所有可用的 setopt 选项,但我仍然得到 1 的响应。我正在尝试向服务器发布请求并期待 json 响应。我错过了什么?

 $logger->info('url:'.$service_url);
$curl = curl_init();
$curl_post_data = array(
'username' => 'user1',
'password' => 'welcome'
);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_POSTFIELDS,$curl_post_data);
curl_setopt($curl, CURLOPT_URL, $service_url);
curl_setopt($curl, CURLOPT_HTTPGET, true);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl,CURLOPT_POST, 1);
curl_setopt($curl,CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($curl,CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($curl,CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($curl,CURLOPT_CONNECTTIMEOUT ,3);
curl_setopt($curl,CURLOPT_TIMEOUT, 20);
curl_setopt($curl, CURLOPT_HTTPHEADER, array(
'Content-Type: application/json',
'Accept: application/json'
));

$curl_response = curl_exec($curl);

if ($curl_response === false) {
$info = curl_getinfo($curl);
curl_close($curl);
die('error occured during curl exec. Additioanl info: ' . var_export($info));


}
curl_close($curl);
$logger->info('curl_response 11:'.print_r($curl_response));
$decoded = json_decode($curl_response,JSON_PRETTY_PRINT);
if (isset($decoded->response->status) && $decoded->response->status == 'ERROR') {
die('error occured: ' . $decoded->response->errormessage);

}
$logger->info('response ok!');
$logger->info('decoded:'.print_r($decoded));

更新解决方案:正如建议的那样,只使用 print_r($curl_response, true) 记录响应,并使用 print_r($decoded['orderId']) 获取特定值。

最佳答案

print_r() 打印它的输出,它不会返回它。为了将调用 print_r() 的输出存储在变量中,或将其发送到记录器或诸如此类的东西,您需要将真值作为第二个参数传递。

$x = print_r($foo); // prints formatted $foo and returns true

$x = print_r($foo, true); // prints nothing and returns formatted $foo

注意:由于您已将 CURLOPT_RETURNTRANSFER 设置为 true,因此对 curl_exec() 的调用将已经返回一个字符串。确实没有必要通过 print_r() 传递它,只需转储字符串即可。

另请注意:您需要验证 json_decode() 不会返回 null。您可能还想验证 HTTP 状态代码是否为 200(您可以通过 curl_getinfo() 完成此操作。

关于php curl_exec 将响应返回为 1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47056645/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com