【问题标题】:php Curl vs postman giving different results on errorphp Curl vs postman 给出不同的错误结果
【发布时间】:2021-06-09 14:59:01
【问题描述】:

我有一个 php curl 脚本,它返回 get 运行的结果作为来自另一个进程的命令。代码是:

<?php
$arr = getopt("f:");
$url = $arr['f'];
$ch = curl_init($url);
 curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
 curl_setopt($ch, CURLOPT_FAILONERROR, true);
 curl_setopt($ch, CURLOPT_RETURNTRANSFER, true );
 $result = curl_exec($ch);
 if (curl_errno($ch)) {
  echo curl_error($ch);
 } else {
  echo $result;
 }
 curl_close($ch);
 ?>

当我使用 curl 对特定 url 执行 api get 请求时,出现 400 错误,curl_error($ch) 是“请求的 URL 返回错误:400 Bad Request”

当我在邮递员中运行相同的请求时,我收到一个 json 回复,例如:{"result_ok":false,"code":400,"message":"Invalid Email: xxxxxxxxxx@ail.com (POST)" }。

如何获取 curl 请求中返回的 json?如果我在出现错误情况时回显 $result,则它为空。

【问题讨论】:

  • 你试过CURLOPT_FAILONERROR, 0吗?它应该返回一些东西,也许是 JSON。
  • 我曾尝试过使用 false 并且它没有改变,但也许有些东西没有更新。我用了你的建议,它奏效了。请将建议作为答案发布,我会接受。

标签: php curl


【解决方案1】:

来自CURLOPT_FAILONERROR explained

如果返回的 HTTP 代码等于或大于 400,则请求失败。默认操作是正常返回页面,忽略该代码

CURLOPT_FAILONERROR 默认为false,所以要么删除它,要么设置它:

curl_setopt($ch, CURLOPT_FAILONERROR, false);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-01-19
    • 1970-01-01
    • 1970-01-01
    • 2021-06-22
    • 2021-10-30
    • 1970-01-01
    • 2013-03-11
    • 2020-10-23
    相关资源
    最近更新 更多