CURLINFO_HTTP_CODE在PHP中输出错误状态代码的问题

时间:2016-05-06 11:05:13

标签: php curl

我在PHP中遇到CURLINFO_HTTP_CODE的奇怪问题,即使cURL请求本身成功,它也返回0。基本上我正在使用for循环来对每个广告系列ID执行基本出价的更改。然后我尝试捕获请求的HTTP状态代码不等于200的情况并将其显示给浏览器。

问题是return var_dump($this->info)返回int(0),如果请求成功,则没有意义。我通过向广告系列ID提出GET请求来检查这一点。我正在使用的代码如下:

class curl
  {
     public $info;
     public $json_output;

     public function curlPut($url, $JSON, $token)
     {
        $ch = curl_init($url);
        $popt = array(
           CURLOPT_CUSTOMREQUEST => 'PUT',
           CURLOPT_RETURNTRANSFER => TRUE,
           CURLOPT_SSL_VERIFYPEER => FALSE,
           CURLOPT_POSTFIELDS => $JSON,
           CURLOPT_HTTPHEADER => array(
              'Content-Type: application/json',
              'Authorization:'.$token.''
           ));
        curl_setopt_array($ch, $popt);
        $this->info = curl_getinfo($ch, CURLINFO_HTTP_CODE);
        $this->json_output = curl_exec($ch);
        curl_close($ch);
        return var_dump($this->info);
     }
  };

有谁知道为什么我的脚本会出现这种行为?

任何评论都将不胜感激!

谢谢,

萨姆

1 个答案:

答案 0 :(得分:0)

您在执行请求之前尝试获取状态代码。

相反,交换:

$this->json_output = curl_exec($ch);
$this->info = curl_getinfo($ch, CURLINFO_HTTP_CODE);