Php 为什么cURL exec还返回我的POST请求的头数据?

Php 为什么cURL exec还返回我的POST请求的头数据?,php,curl,Php,Curl,我只是测试一些图像压缩代码,然后上传到imgurapi。但是,除了获取响应内容,我似乎还获取了头数据,我不知道如何解析JSON。以下是我目前掌握的情况: compress\u test.php include("imgur_upload.php"); echo compress_and_upload(); function compress_and_upload(){ $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'https

我只是测试一些图像压缩代码,然后上传到imgurapi。但是,除了获取响应内容,我似乎还获取了头数据,我不知道如何解析JSON。以下是我目前掌握的情况:

compress\u test.php

include("imgur_upload.php");
echo compress_and_upload();
function compress_and_upload(){
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, 'https://api.imgur.com/3/image.json');
    curl_setopt($ch, CURLOPT_POST, TRUE);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); // for localhost
    curl_setopt($ch, CURLOPT_HEADER, FALSE); // tried this but no change
    curl_setopt($ch, CURLOPT_HTTPHEADER, array('Authorization: Client-ID ' . IMGUR_CLIENT_ID));
    curl_setopt($ch, CURLOPT_POSTFIELDS, array('image' => 'http://userserve-ak.last.fm/serve/300x300/51654499.png', 'type' => 'url'));

    $reply = curl_exec($ch);
    curl_close($ch);
    return $reply;
}
imgur\u upload.php

include("imgur_upload.php");
echo compress_and_upload();
function compress_and_upload(){
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, 'https://api.imgur.com/3/image.json');
    curl_setopt($ch, CURLOPT_POST, TRUE);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); // for localhost
    curl_setopt($ch, CURLOPT_HEADER, FALSE); // tried this but no change
    curl_setopt($ch, CURLOPT_HTTPHEADER, array('Authorization: Client-ID ' . IMGUR_CLIENT_ID));
    curl_setopt($ch, CURLOPT_POSTFIELDS, array('image' => 'http://userserve-ak.last.fm/serve/300x300/51654499.png', 'type' => 'url'));

    $reply = curl_exec($ch);
    curl_close($ch);
    return $reply;
}
我所期待的只是我相信的JSON数据

我得到的是:

BHTTP/1.1 200 OK
Server: nginx
Date: Sat, 03 Aug 2013 05:14:53 GMT
Content-Type: application/json
Content-Length: 325
Connection: keep-alive
Set-Cookie: IMGURSESSION=dhjtli4c84koo2jbr8lild7ji7; path=/; domain=.imgur.com
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Pragma: no-cache
Set-Cookie: _nc=1; path=/; domain=.imgur.com; httponly
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, PUT, POST, DELETE, OPTIONS
Access-Control-Allow-Headers: Authorization, Content-Type, Accept, X-Mashape-Authorization
X-RateLimit-ClientLimit: 12500
X-RateLimit-ClientRemaining: 12473
X-RateLimit-UserLimit: 500
X-RateLimit-UserRemaining: 497
X-RateLimit-UserReset: 1375510414
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Set-Cookie: UPSERVERID=i-614a2006; path=/
Accept-Ranges: bytes
X-Imgur-Cached: 0

{"data":{"id":"HE981gx","title":null,"description":null,"datetime":1375506893,"type":"image\/png","animated":false,"width":300,"height":300,"size":458117,"views":0,"bandwidth":0,"favorite":false,"nsfw":null,"section":null,"deletehash":"qkl9lNDWCRR52Z0","link":"http:\/\/i.imgur.com\/HE981gx.png"},"success":true,"status":200}°

我在自己的服务器上运行了代码并使用了您的代码,但没有出现此问题。

您确定没有在某个位置设置
CURLOPT_HEADER
?如果您将其设置为
false
?@Brad Yup,我尝试将
CURLOPT_HEADER
设置为false,但我仍然得到了全部信息,因此无法解析JSON。我可以找到
{
但我真的不应该这么做。@paranoid android什么版本的php,什么操作系统,你是用CLI或类似mod_php的东西来运行它的吗?@Nirk php版本5.4.12,Windows 7 x64。我一直在用WAMP在浏览器中运行它,我以前从来没有遇到过这个问题。@paranoid android错误的处理方式是一样的(尝试使用无效ID)你有没有去他们那里注册以获得一个客户端id?因为我肯定没有分享我的。那没有关系。我想你的服务器没有解码GZ编码。我可以从结果开头和结尾的字符看出。我已经使用CURL多年了。我想你已经了解了一些事情,但我不知道如何启用它或者修复此问题。尝试添加:curl_setopt($ch,CURLOPT_ENCODING');