繁体   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