2009年3月27日金曜日

 

【API】Wassr APIをPHPから

Wassr API Documents - Wassr

とっても判りにくく不親切な気がする仕様書ですが、以下のリンク先を参考にします。

Wassr API -

流れにすると次の様なコードでしょうか。

curl_setopt - PHP マニュアル
/* Wassr APIからcURLでPOST */
  $username = 'username';
  $password = 'password';
  $url = 'http://api.wassr.jp/statuses/update.json';
  $message = 'This is Test.';
  $userpwd = $username.':'.$password;
  $params = array('status' => rawurlencode($message), 'image' => "@image.jpg");

  $ch=curl_init();
  curl_setopt($ch,CURLOPT_URL, $url);
  curl_setopt($ch,CURLOPT_POST, 1);
  curl_setopt($ch,CURLOPT_USERPWD, $userpwd);
  curl_setopt($ch,CURLOPT_POSTFIELDS, $params); // ポストするデータ
  curl_setopt($ch,CURLOPT_HEADER, FALSE); // TRUEにするとヘッダも返す
  curl_setopt($ch,CURLOPT_RETURNTRANSFER, 1);
  $result=curl_exec($ch);
  curl_close($ch);
  var_dump(json_decode($result));

画像は「multipart/form-data」として送らなくてはいけないようです。「http_build_query()」をリンク先では使って「$params」をPOSTしてますが、配列を渡すことで「multipart/form-data」POSTが出来るので使いません。画像の指定は「@ファイルパス」です。
リンク先のコードはワサチャンネルへPOSTですがURLとパラメータを変えれば同じように出来るのではないでしょうか。

「cURL」を使わない場合のコードです。こちらは「stream_context_create()」を使っております。

/* Wassr APIからストリーム関数でPOST */
  $url = "http://api.wassr.jp/statuses/update.json?";
  $params = "status=". rawurlencode($message);
  $result = file_get_contents($url.$params , false, stream_context_create(array(
      "http" => array(
          "method" => "POST",
          "header" => "Authorization: Basic ". base64_encode($username. ":". $password)
      )
  )));

stream_context_create()」で「multipart/form-data」をヘッダに付けるには「header」に指定するようです。
URLを変更して認証用のヘッダを付ければWassrにPOST出来るかも知れません。試してません。


   $fileHandle = fopen("someImage.jpg", "rb");
   $fileContents = stream_get_contents($fileHandle);
   fclose($fileHandle);

   $params = array(
      'http' => array
      (
          'method' => 'POST',
          'header'=>"Content-Type: multipart/form-data\r\n",
          'content' => $fileContents
      )
   );
   $url = "http://somesite.somecompany.com?someParam=someValue";
   $ctx = stream_context_create($params);
   $fp = fopen($url, 'rb', false, $ctx);

   $response = stream_get_contents($fp);
stream_context_create - PHP マニュアル

関連

(はてな|Tumblr|Twitter|Wassr) APIクラス - さぼてん:2009年3月25日

ラベル:


コメント: コメントを投稿

登録 コメントの投稿 [Atom]



この投稿へのリンク:

リンクを作成



<< ホーム

This page is powered by Blogger. Isn't yours?

登録 投稿 [Atom]

Google