如何在php curl中获取响应代码412的响应

如何在php curl中获取响应代码412的响应,php,curl,Php,Curl,我在做一个api调用,期望得到412响应,但我无法得到响应curl\u exec($curl)返回false而不是响应。但是我可以使用curl\u getinfo($curl,CURLINFO\u HTTP\u code)获取响应代码。我期待着像这样的回应 HTTP/1.1 412 Precondition Failed { "message": "Sync token invalid or too old. If you are attemping to keep resources in

我在做一个api调用,期望得到412响应,但我无法得到响应
curl\u exec($curl)
返回false而不是响应。但是我可以使用
curl\u getinfo($curl,CURLINFO\u HTTP\u code)
获取响应代码。我期待着像这样的回应

HTTP/1.1 412 Precondition Failed
{
  "message": "Sync token invalid or too old. If you are attemping to keep resources in sync, you must re-fetch the full dataset for this query now.",
  "sync": "edfc0896b370b7a479886d316131bf5c:0"
}
我怎样才能得到答复。使用php curl。下面是我请求api的函数

$curl = curl_init();
    curl_setopt($curl, CURLOPT_URL, $url);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); // Don't print the result
    curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, $this->timeout);
    curl_setopt($curl, CURLOPT_TIMEOUT, $this->timeout);
    curl_setopt($curl, CURLOPT_FAILONERROR, true);
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); // Don't verify SSL connection
    curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0); //         ""           ""

    if (!empty($this->apiKey)) {
        // Send with API key.
        curl_setopt($curl, CURLOPT_USERPWD, $this->apiKey);
        curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
        // Don't send as json when attaching files to tasks.
        if (is_string($data) || empty($data['file'])) {
            curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-Type: application/json')); // Send as JSON
        }
    } elseif (!empty($this->accessToken)) {
        // Send with auth token.
        curl_setopt($curl, CURLOPT_HTTPHEADER, array(
            'Content-Type: application/json',
            'Authorization: Bearer ' . $this->accessToken
        ));
    }

    if ($this->advDebug) {
        curl_setopt($curl, CURLOPT_HEADER, true); // Display headers
        curl_setopt($curl, CURLINFO_HEADER_OUT, true); // Display output headers
        curl_setopt($curl, CURLOPT_VERBOSE, true); // Display communication with server
    }

    if ($method == ASANA_METHOD_POST) {
        curl_setopt($curl, CURLOPT_POST, true);
    } elseif ($method == ASANA_METHOD_PUT) {
        curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'PUT');
    } elseif ($method == ASANA_METHOD_DELETE) {
        curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'DELETE');
    }
    if (!is_null($data) && ($method == ASANA_METHOD_POST || $method == ASANA_METHOD_PUT)) {
        curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
    }

    try {
        $this->response = curl_exec($curl);
        var_dump($this->response);
        var_dump(curl_error($curl));
        $this->responseCode = curl_getinfo($curl, CURLINFO_HTTP_CODE);

        if ($this->debug || $this->advDebug) {
            $info = curl_getinfo($curl);
            echo '<pre>';
            print_r($info);
            echo '</pre>';
            if ($info['http_code'] == 0) {
                echo '<br>cURL error num: ' . curl_errno($curl);
                echo '<br>cURL error: ' . curl_error($curl);
            }
            echo '<br>Sent info:<br><pre>';
            print_r($data);
            echo '</pre>';
        }
    } catch (Exception $ex) {
        if ($this->debug || $this->advDebug) {
            echo '<br>cURL error num: ' . curl_errno($curl);
            echo '<br>cURL error: ' . curl_error($curl);
        }
        echo 'Error on cURL';
        $this->response = null;
    }

    curl_close($curl);

    return $this->response;
$curl=curl_init();
curl_setopt($curl,CURLOPT_URL,$URL);
curl_setopt($curl,CURLOPT_RETURNTRANSFER,true);//不要打印结果
curl\u setopt($curl,CURLOPT\u CONNECTTIMEOUT,$this->timeout);
curl\u setopt($curl,CURLOPT\u TIMEOUT,$this->TIMEOUT);
curl_setopt($curl,CURLOPT_FAILONERROR,true);
curl_setopt($curl,CURLOPT_SSL_VERIFYPEER,0);//不验证SSL连接
curl_setopt($curl,CURLOPT_SSL_VERIFYHOST,0);//""           ""
如果(!empty($this->apiKey)){
//使用API密钥发送。
curl_setopt($curl,CURLOPT_USERPWD,$this->apiKey);
curl_setopt($curl,CURLOPT_HTTPAUTH,CURLAUTH_BASIC);
//将文件附加到任务时不要以json的形式发送。
如果(是字符串($data)| |空($data['file'])){
curl_setopt($curl,CURLOPT_HTTPHEADER,array('Content-Type:application/json'));//作为json发送
}
}elseif(!empty($this->accessToken)){
//使用身份验证令牌发送。
curl_setopt($curl,CURLOPT_HTTPHEADER,数组(
'内容类型:application/json',
'Authorization:Bearer'.$this->accessToken
));
}
如果($this->advDebug){
curl_setopt($curl,CURLOPT_HEADER,true);//显示标题
curl_setopt($curl,CURLINFO_HEADER_OUT,true);//显示输出头
curl_setopt($curl,CURLOPT_VERBOSE,true);//显示与服务器的通信
}
如果($method==ASANA\u method\u POST){
curl_setopt($curl,CURLOPT_POST,true);
}elseif($method==ASANA\u method\u PUT){
curl_setopt($curl,CURLOPT_CUSTOMREQUEST,'PUT');
}elseif($method==ASANA\u method\u DELETE){
curl_setopt($curl,CURLOPT_CUSTOMREQUEST,'DELETE');
}
如果(!is_null($data)&($method==ASANA_method_POST | |$method==ASANA_method_PUT)){
curl_setopt($curl,CURLOPT_POSTFIELDS,$data);
}
试一试{
$this->response=curl\u exec($curl);
变量转储($this->response);
变量转储(curl\u错误($curl));
$this->responseCode=curl\u getinfo($curl,CURLINFO\u HTTP\u代码);
if($this->debug |$$this->advDebug){
$info=curl\u getinfo($curl);
回声';
打印(信息);
回声';
如果($info['http_code']==0){
echo“
cURL error num:”.cURL\u errno($cURL); 回显'
旋度错误:'.cURL_错误($cURL); } 回显“
发送的信息:
”; 打印(数据); 回声'; } }捕获(例外$ex){ if($this->debug |$$this->advDebug){ echo“
cURL error num:”.cURL\u errno($cURL); 回显'
旋度错误:'.cURL_错误($cURL); } 回声“旋度错误”; $this->response=null; } curl_close($curl); 返回$this->response;
哦,在移除
curl\u setopt($curl,CURLOPT\u FAILONERROR,true)后,
我得到了响应。只是回答是否可以帮助其他人。

尝试使用“请求的URL返回错误:412前提条件失败”查看是否有错误。这是错误消息。您可以在使用curl代码的地方发布php代码吗?您是否设置了
CURLOPT\u RETURNTRANSFER
选项?