我正在使用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);
请求响应的主体包含状态代码,如果请求已成功,则包含用户对象。这是一个匿名请求,它在响应头中返回令牌。
我的问题: 脚本的上述响应为空。
如果我注释掉了CURLOPT_RETURNTRANSFER选项,那么我得到我需要的东西,但它会被回显,响应为1.
如果我注释掉CURLOPT_HEADER选项,那么我只得到响应的主体。
我尝试在http和https之间切换。
我使用的是PHP-5.5.27。
答案 0 :(得分:6)
你在盲目地解码而不确定你得到的是JSON。简短的回答:事实并非如此。它的文本包含标题,可能还有一些JSON。
做类似的事情:
<div class="container">
<span id="separator">|</span>
<span id="arrow">▼</span>
<select>
<option>Option</option>
<option>Option</option>
<option>Option</option>
<option>Option</option>
<option>Option</option>
</select>
</div>