Правильно ли я использую API Yfrog для выполнения HTTP-запроса с данными POST? - PullRequest
1 голос
/ 05 мая 2009

Я пытаюсь использовать API YFrog. Я думаю, что я использую его правильно, чтобы попытаться отправить запрос HTTP POST, который имеет тип содержимого XML. Однако, как тело ответа, я всегда получаю ошибку 404 по некоторым причинам. Здесь - это их API.

Вот моя попытка загрузки PHP-кода.

 $data = array('media' => 'http://img253.imageshack.us/my.php?image=bfab82a545d414uo.jpg', 'username' => 'asc', 
    'password' => 'asc', 'message' => 'hi');

$url = 'http://example.com/api/uploadAndPost';

$req = new HTTPRequest($url);
$req->addHeaders(array("Content-Type" => "text/xml")); 
$req->setMethod(HTTP_METH_POST); 
$req->addQueryData($data); $req->send();
echo $req->getResponseBody();

Также для СМИ написано «Двоичные данные изображения», означает ли это, что URL-адрес местоположения изображения не может быть передан ему? Что это значит?

Ответы [ 3 ]

1 голос
/ 07 мая 2009

Я думаю, что проблема в основном в том, что ImagesHack не возвращает двоичный файл, когда вы указываете URL, указанный выше. Для меня это возвращает документ HTML.

Я думаю, вы должны попробовать передать двоичный файл в качестве параметра "media". Фотография, которую вы пытаетесь получить, находится по адресу http://img253.imageshack.us/img253/172/bfab82a545d414uo.jpg,, вместо этого используйте этот URL.

Это ответ, который я получил с тем, который вы изначально пробовали:

HEAD /my.php?image=bfab82a545d414uo.jpg HTTP/1.1
Host: img253.imageshack.us

HTTP/1.1 200 OK
X-Powered-By: PHP/5.2.6
Set-Cookie: nopopunder=1; expires=Thu, 07-May-2009 11:10:21 GMT; path=/; domain=.imageshack.us
X-UA-Compatible: IE=EmulateIE7
Content-type: text/html
0 голосов
/ 13 мая 2009

Вам необходимо использовать Content-Type из multipart/form-data.

yfrog отправляет обратно XML-файл в качестве ответа, но API ожидает стандартный запрос HTTP POST с данными изображения.

API документы состояние:

"данные поста должны быть отформатированы как многочастному / форм-данных "

0 голосов
/ 11 мая 2009

Вам нужно использовать addPostFields и addPostFile вместо addQueryData. Пример использования обоих: здесь

@ MC верен в том смысле, что вы не можете отправлять URL-указатель на файл куда-то еще, вам нужно загружать эти байты. Поэтому сначала нужно загрузить локальную копию, передав путь к локальной копии этого файла методу addPostFile.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...