使ってみよう! Windows Live SDK/API

第21回 Windows Live Photo API(3)

この記事を読むのに必要な時間:およそ 8.5 分

本記事の対象APIは既にサポートされていません。記事は参考程度にご利用ください。

アルバムとフォトの編集

前回はWindows Live Photo APIを利用した簡単なWebアプリケーションを作成しました。そのアプリケーションでは以下の読み取りに関する内容を実装しました。

  • アルバム・フォト・フォトタイプの一覧取得
  • フォトバイナリデータ取得

今回は,作成や編集など,以下の操作ができるようアプリケーションを拡張します。

  • アルバムの作成
  • フォトのアップロード
  • アルバム・フォトの名前(タイトル)変更
  • アルバム・フォトの削除

作成するWebアプリケーションを図1に示します。

図1 作成するWebアプリケーション

図1 作成するWebアプリケーション

あまり良いUIではありませんが,APIの確認には十分でしょう。前回に作成したものに機能を追加する形で紹介します。

リクエストとレスポンス

アルバムおよびフォト情報の取得やフォトのダウンロード時には,すべてHTTP GETメソッドを使用していました。対して,アルバム作成やアップロード,名前変更,削除ではリクエスト時にPOST,PUT,DELETEといったメソッドを使います。

最初に今回のコードで共通で利用するメソッドを作成しておきます。Default.aspx.vbファイルに追記してください。アクセスするURLとHTTPメソッドを指定するとHttpWebRequestオブジェクトを返すメソッドをまず用意します。

Protected Function CreatedRequest(ByVal path As String, Optional ByVal method As String = "GET") As HttpWebRequest
    Dim request As HttpWebRequest = DirectCast(WebRequest.Create(path), HttpWebRequest)
    request.Method = method
    request.Headers(HttpRequestHeader.Authorization) = String.Format("DelegatedToken dt=""{0}""", Me.DelegateionToken)
    Return request
End Function

Live委任認証用のヘッダもここで追加しています。

続いてLiveサービスからのレスポンスを取得する部分もメソッドとして作成しておきましょう。

前回はXML文書やバイナリデータを取得して何かしらの処理をしていましたが,今回は基本的にHTTPステータスコードのみ,または それに加えてレスポンスに含まれるヘッダ内容のみを必要とします。

ここではレスポンス取得するメソッドを次のように作成しました。

Protected Function GetResponse(ByVal request As HttpWebRequest) As HttpStatusCode
    Try
        Using response As HttpWebResponse = DirectCast(request.GetResponse, HttpWebResponse)
            Return response.StatusCode
        End Using
    Catch webEx As WebException
        Return DirectCast(webEx.Response, HttpWebResponse).StatusCode
    End Try
End Function

HttpWebRequestオブジェクトを引数として渡し,HttpStatusCodeが返ります。

アルバム作成およびフォトのアップロードに成功した場合,アップロードにより作成されたリソースのパスを示す文字列がレスポンスのLocationヘッダに格納されています。これから作成するアプリケーションではLocationで指定された値を使用していないのですが,メソッドは次のように作り呼び出しています。

Protected Function GetResponse(ByVal request As HttpWebRequest, ByRef location As String) As HttpStatusCode
    Try
        location = ""
        Using response As HttpWebResponse = DirectCast(request.GetResponse, HttpWebResponse)
            location = response.Headers(HttpResponseHeader.Location)
            Return response.StatusCode
        End Using
    Catch webEx As WebException
        Return DirectCast(webEx.Response, HttpWebResponse).StatusCode
    End Try
End Function

参照渡しによりLocationヘッダの値を返すようにしています。

著者プロフィール

松江祐輔(まつえゆうすけ)

日本システムウエア株式会社 勤務。現在,ハードウェア設計・検証業務を担当。大学生・大学院生時代はベンチャー企業 有限会社ミレニアムシステムズにプログラマーとして従事。趣味はプログラミング。好きな言語はVisual Basic。Microsoft MVP for Windows Live Platform(Jul 2010 - Jun 2011),Windows Live(Jul 2011 - Jun 2013)。

URL:http://katamari.jp

コメント

コメントの記入