簡體   English   中英

PHP cURL選項CURLOPT_HEADER和CURLOPT_RETURNTRANSFER是否沖突

[英]Do PHP cURL options CURLOPT_HEADER and CURLOPT_RETURNTRANSFER conflict

我正在使用cURL和php對API進行身份驗證。 像這樣:

$ch = curl_init();
$headers    = [];
$headers[]  = 'Content-Type: application/json';
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_URL, $this->url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode( $this->body ));
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$this->response = json_decode( curl_exec($ch) );
curl_close ($ch);

請求響應的主體包含狀態代碼,如果請求已成功,則包含用戶對象。 這是一個匿名請求,它在響應頭中返回令牌。

我的問題:腳本的上面響應是null。

如果我注釋掉CURLOPT_RETURNTRANSFER選項,那么我得到我需要的東西,但它會被回顯,響應為1。

如果我注釋掉CURLOPT_HEADER選項,那么我只得到響應的主體。

我試過在http和https之間切換。

我使用的是PHP-5.5.27。

你是盲目解碼而不確定你得到的是JSON。 簡短的回答:事實並非如此。 它的文本包含標題,可能還有一些JSON。

做類似的事情:

$ch = curl_init();
$headers    = [];
$headers[]  = 'Content-Type: application/json';
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_URL, $this->url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode( $this->body ));
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$response = curl_exec($ch);
$info = curl_getinfo($ch);
$actualResponseHeaders = (isset($info["header_size"]))?substr($response,0,$info["header_size"]):"";
$actualResponse = (isset($info["header_size"]))?substr($response,$info["header_size"]):"";

$this->response = json_decode( $actualResponse );
curl_close ($ch);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM