2013-11-27 6 views
1

Я работаю, чтобы соединиться с API с помощью завиток и PHPCURL, JSON и PHP

У меня есть этот CURL заявление

curl -i --user api:YXBpOmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1 --data-binary @test.png https://api.blahblah.com/blah 

где YXBpOmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1 является ключевым апи и @ test.png это изображение файл Мне нужно перенести в API для загрузки. То, что я не понимаю, как писать завиток для ссылки выше

и у меня также есть этот пример заявление, как указано на сайте для разработчиков (выглядит JSON)

POST /blah HTTP/1.1 
Host: api.blahblah.com 
Authorization: Basic YXBpOmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1 

До сих пор, я написал эту игру,

$url = 'https://api.tinypng.com/shrink'; 
$image = 'bf4lwp2.png'; 
$key = 'YXBpOmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1'; 

$jsonscript = array( 
'Host' => 'api.tinypng.com', 
'Authorization' => $key); 

$json_string = json_encode($jsonscript); 

$ch = curl_init($url); 
// Disable SSL verification 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 
curl_setopt($ch, CURLOPT_POST, true); 
curl_setopt($ch, CURLOPT_BINARYTRANSFER, 1); 
curl_setopt($ch, CURLOPT_HEADER, 1); 
curl_setopt($ch, CURLOPT_POSTFIELDS, 'api:'.$key); 
curl_setopt($ch, CURLOPT_PUT, true); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_FILE, $image); 
// Execute 
$result=curl_exec($ch); 

Кроме того, если мой запрос будет успешным, я получаю это ...

HTTP/1.1 201 Created 
Location: https://api.blahblah.com/blahblah.png 
Content-Type: application/json; charset=utf-8 

{ 
    "input": { 
    "size": 87654 
    }, 
    "output": { 
    "size": 102020, 
    "ratio": 0.236 
    } 
} 

Я знаю, что мне нужно использовать file_get_contents(), чтобы получить все это, но я не знаю, какой URL-адрес нужно добавить в эту функцию.

+0

file_get_contents не могут сделать POST сам по себе. он будет делать только GET. Вам нужно будет использовать cURL или использовать поток, чтобы перейти к f_g_c –

+0

Очевидно ... Я написал его там в конце ... «Я не знаю, какой URL-адрес поставить (или что передать) в эту функцию (file_get_contents()) «... Sry, если я говорю грубо ... Его мой проект и вид от головной боли (не совсем, но вы знаете, что я имею в виду) за то, что тратили на это так много времени ... Can вы поможете мне с заявлением на скручивание? Где я ошибаюсь? – prateekkathal

+0

CURLOPT_FILE записывает полученные данные в файл. это не то, как вы загружаете файл. это делается через postfields и префикс '@' для имени файла. например 'array ('@ file' => 'test.png')' –

ответ

0

Чтобы получить данные из JSON первыми вы можете использовать JSON и раскодирование, чем цикл использования Еогеаспа для разобрать эти данные в переменные