我是否正确使用Yfrog的API来发送带有POST数据的HTTP请求?

时间:2009-05-05 18:45:31

标签: php xml api

我正在尝试使用YFrog的API。我想我正在使用它来尝试发送一个内容类型为XML的HTTP POST请求。但是,作为响应主体,由于某种原因,我总是得到404错误。 Here是他们的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 个答案:

答案 0 :(得分:1)

我认为问题基本上就是当你给出上面发布的URL时,ImagesHack不会返回二进制文件。对我来说,它会返回一个HTML文档。

我认为您应该尝试将二进制文件作为“media”参数传递。您尝试获取的照片位于http://img253.imageshack.us/img253/172/bfab82a545d414uo.jpg,请改用此网址。

这是我最初尝试的回复:

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

答案 1 :(得分:0)

您需要使用addPostFields和addPostFile而不是addQueryData。如何使用两者的示例是here

@MC是正确的,因为你不能将URL指针发送到其他地方的文件,你需要实际上传这些字节。因此,您首先要下载本地副本,将该文件的本地副本的路径传递给addPostFile方法。

答案 2 :(得分:0)

您需要Content-Type使用multipart/form-data

yfrog将XML文件作为响应发回,但API期望带有图像数据的标准HTTP POST请求。

API docs州:

  

“发布数据的格式应为   多部分/格式数据“