SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

速習 Windowsストアアプリケーション

サーバーと連携するWindowsストアアプリを作成する(前編)

速習 Windowsストアアプリケーション 第14回

  • X ポスト
  • このエントリーをはてなブックマークに追加

通信をハンドリングする

 通常、HttpClientクラスによるHTTP通信はサーバー側からリダイレクトの応答を受け取った場合、指定されたURLを開きます。

 自動的に指定されたURLを開くのではなく、リダイレクトの制御(ハンドリング)を行う方法を紹介します(HttpRequestSample_004.zip)。

サーバー側のコード

 今回もサーバー側はPHPで記述します。コードは非常にシンプルです。

サーバー側コード(PHP)
<?php
// リダイレクトを行うサンプル
header('Location: http://coelacanth.heteml.jp/sample/codezine/postsample.php');
?>

 アクセスが来たらpostsample.phpにリダイレクトを行う、というシンプルなコードです。

ストアアプリ側コード

 ストアアプリ側は以下のようにリダイレクトをハンドリングします。

ストアアプリ側
HttpClientHandler handler = new HttpClientHandler();
handler.AllowAutoRedirect = false; // 自動でリダイレクトさせない

HttpClient client = new HttpClient(handler);

String url = "http://coelacanth.heteml.jp/sample/codezine/redirectsample.php";

HttpResponseMessage message;

String responseString;

try
{
    message = await client.GetAsync(url);

    // リダイレクトか判定
    if (message.StatusCode == System.Net.HttpStatusCode.Found)
    {
        this.resultTextBox.Text = String.Format("リダイレクトが指定されましたURLは{0}です。", message.Headers.Location);
    }
    else
    {

        responseString = await message.Content.ReadAsStringAsync();

        this.resultTextBox.Text = responseString;
    }
}
catch
{
    // 例外が発生した場合の処理を記述していく
}

HttpClientHandlerクラス

 HTTP通信のハンドリングにはHttpClientHandlerクラスを用います。

 今回はAllowAutoRedirectクラスにfalseを指定することで、自動でリダイレクトされることを制御しています。値をtrueに変更すると、サーバー側からリダイレクトの応答があった場合に自動でリダイレクトします。

 HttpClientHandlerは、リダイレクトの制御以外にも認証やクッキーの制御にも利用できます。

HttpResponseMessage.StatusCodeプロパティ

 通信結果のステータスコードが入ります。ステータスコードはHttpStatusCode列挙型の値が入ります。HttpStatusCodeについては以下のURLに一覧がありますので参考にしてみてください。

 今回の場合はHttpStatusCode.Found、302リダイレクトの値が返されます。リダイレクト先のURLはHeaders.Locationプロパティで取得できます。

 今回のサンプルを実行すると以下のような実行結果が表示されます。

リダイレクトを制御する
リダイレクトを制御する

まとめ

 サーバーと連携する基本的な方法を紹介しました。

 冒頭にも書いた通り、サーバーとの連携はストアアプリの世界を端末内から、世界中のユーザーと繋がる世界へと広げることができます。また、ストアアプリだけではなく、iPhoneやAndroidのアプリともデータを共有することが可能になります。

 今回はサーバー側のコードとして簡単なPHPのサンプルを利用しましたが、本格的にサーバーを利用しようとするとデータベースやサーバーの知識が必要になってきます。色々覚えることが多く大変ですが、ぜひサーバーと連携させたストアアプリに挑戦してみてください。

 次回は、RSSの取得やSNSとの連携、クラウド連携などのより実践的なテーマについて紹介する予定です。

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
速習 Windowsストアアプリケーション連載記事一覧

もっと読む

この記事の著者

西村 誠(ニシムラ マコト)

 Microsoft MVP Windows Platform Development。 Flash、PHPの開発経験もあり国産ECサイト構築フレームワーク「EC-CUBE」の公式エバンジェリストでもある。 ブログ:眠るシーラカンスと水底のプログラマー 著書:基礎から学ぶ Windowsストアアプリ開発

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/7988 2014/10/01 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング