2013-08-03 2 views
1

Я просто тестирую код для сжатия изображения, а затем загружаю его в API Imgur. Но вместо того, чтобы просто получать контент ответа, я, похоже, получаю данные заголовка, и я не могу понять, как просто разбирать JSON. Вот то, что я до сих пор:Почему cURL exec также возвращает данные заголовка моего запроса POST?

compress_test.php

include("imgur_upload.php"); 
echo compress_and_upload(); 

imgur_upload.php

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}° 
+0

Вы уверены, что 'CURLOPT_HEADER' не установлен где-то? Что, если вы установите его на 'false'? – Brad

+0

@Brad Yup, я попробовал его с установкой 'CURLOPT_HEADER' в false, но я все еще получаю все, поэтому не могу разобрать JSON. Я мог бы найти первый индекс '{', но мне действительно не нужно. – rtheunissen

+0

@ paranoid-android какая версия php, какая ОС, и вы используете это с CLI или что-то вроде mod_php? – SheetJS

ответ

-2

Я побежал код на своих собственных серверах и использовать свой код, не имеют этой проблемы.

+0

Вы зашли и зарегистрировались у них, чтобы получить идентификатор клиента? Потому что я определенно не разделял мое. – rtheunissen

+0

, который не имеет релевантности. Я думаю, что ваш сервер не расшифровывает кодировку GZ. Я могу сказать персонажу в начале и в конце результата. Я использую CURL в течение многих лет. – Thomas

+0

Я думаю, что вы на что-то, но я не знаю, как это сделать, или исправлять это. – rtheunissen

Смежные вопросы