2009-05-05 1 views
1

私はYFrogのAPIを使用しようとしています。私はコンテンツタイプのXMLであるHTTP POSTリクエストを試して送信するために正しく使用していると思います。しかし、レスポンスボディとして、何らかの理由で常に404エラーが発生しています。ここにAPIがあります:http://yfrog.com/upload_and_post.php私はYfrogのAPIを使って、POSTデータでHTTPリクエストを正しく作成していますか?

ここにアップロードするPHPコードの試みです。

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

$url = 'http://yfrog.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を渡すことができないことを意味しますか?どういう意味ですか?

ありがとうございます。

+0

もはや必要ではないソリューション "ポストデータが マルチパート/フォームデータとしてフォーマットする必要があります"、新しい代替APIが見つかりました。しかし、最高の正解はまだ賞金を受け取るでしょう。 – Abs

答えて

1

私は上記のURLを与えると、ImagesHackはバイナリファイルを返さないというのが基本的な問題だと思います。私にとっては、HTML文書を返します。

「メディア」パラメータとしてバイナリファイルを渡すようにしてください。入手しようとしている写真がhttp://img253.imageshack.us/img253/172/bfab82a545d414uo.jpgにある場合は、代わりにこのURLを使用してください。

これは、私はあなたが最初に試したものに得ること応答である:あなたがaddPostFieldsとaddPostFileの代わりaddQueryDataを使用する必要が

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

あなたが正しいです、私はそのイメージの正確な直接の場所を使用する必要があります。私はその変更を加えましたが、私はまだ応答として404エラーを取得しますか? – Abs

0

。両方を使用する方法の例は、URLポインタを別の場所に送ることができないという点で、実際にそれらのバイトをアップロードする必要があります。そのため、まずローカルコピーをダウンロードして、そのファイルのローカルコピーにパスを渡してaddPostFileメソッドに渡します。

0

Content-Typemultipart/form-dataとする必要があります。

yfrogはXMLファイルを応答として返しますが、APIは画像データとともに標準のHTTP POST要求を待っています。

API docs状態:

関連する問題