SHOEISHA iD

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

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

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

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

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

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

 これまでWindowsストアアプリ(以下ストアアプリ)の機能や特徴を紹介してきましたが、その多くがストアアプリ自身、もしくはストアアプリが動作する端末の機能内に限られた内容でした。それらを利用して十分な機能を持ったストアアプリを作成することが可能ですが、外部のサーバーと接続してデータを取得することで、より魅力的なストアアプリにすることが可能になります。今回はHTTP通信を利用して外部のサーバーと通信する方法を紹介します。

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

サーバーと連携するメリット

 サーバーと連携すると、ストアアプリがインストールされた端末という枠を超えて、様々なストアアプリ利用者とのデータの共有が可能です。

 たとえば、ゲームアプリの得点ランキングについて考えた場合、サーバーを利用しないとあなたの端末でゲームをプレイした人限定のランキングになりますが、サーバーを利用することで世界中のプレイヤーとのランキングを集計して表示できるようになります。

サーバーと連携する際の注意点

 サーバーは多くの場合インターネット上に存在するWebサーバーです。

 当然ですが、Webサーバーと通信を行う場合「端末がインターネット接続可能である必要がある」ことに注意しましょう。

 ストアアプリでいうと、マニフェストファイル(Package.appxmanifest)にインターネット接続を行う旨を宣言する必要があります。また、通信時にインターネットに接続できるかの確認や、通信が失敗することを考慮に入れた設計・実装を行う必要があります。

 これらの注意点については、この後サンプルを見ながら説明していきます。

マニフェストファイルの記述について

 ストアアプリを申請したことがある方ならご存知だと思いますが、ストアアプリのPackage.appxmanifestではインターネット接続する機能の宣言がデフォルトでチェックされた状態になっています。

 ストアアプリが実際にインターネット接続を行う場合はそのままで良いですが、ストアアプリがインターネットに接続しないにもかかわらず、このチェックを外さないまま申請すると、プライバシーポリシーを要求され、ストアアプリが審査に落ちてしまいます。インターネット接続はよく使うということでオンにしてあるのだと思いますが、注意が必要なのはインターネットに接続しない場合の方かもしれません。

基本的なサンプルを紹介

 それではWebサービスにHTTP通信を行う基本的なサンプルを見ていきましょう(HttpRequestSample_001.zip)。

マニフェストの宣言

 先に少し述べましたが、HTTP通信を行うアプリケーションはマニフェストファイルにその旨を設定する必要があります。

 ストアアプリではデフォルトでオンになっており、意識せずにHTTP通信を実行できるので作業として何かを行う必要はないのですが、どこにその設定があるかを確認しておきましょう。

 Package.appxmanifestファイルを開きます。

 「機能」タブをクリックすると、「インターネット(クライアント)」の項目にチェックが入っているのが確認できます。

インターネット(クライアント)にチェックが入っている
インターネット(クライアント)にチェックが入っている

サンプルコード

 HTTP通信を行うコードは以下です。

基本的なHTTP通信
HttpClient client = new HttpClient();

String url = "http://coelacanth.jp.net/";

HttpResponseMessage message;

String responseString;

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

    responseString = await message.Content.ReadAsStringAsync();

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

コードの説明

 それではコードの流れを説明します。

HttpClientクラス

 HTTP通信にはHttpClientクラスを利用します。

 サンプルプロジェクトにある通り、WinRTベースのWindows Phoneアプリケーションでも同様です。

GetAsyncメソッドとHttpResponseMessageクラス

 HTTPClientクラスのGetAsyncメソッドに通信先のURLを渡すことでHttpResponseMessage型の応答(レスポンス)を得ることができます。

 FiddlerなどでHTTP通信を覗いてみるとこのタイミングで実際の通信が行われていることが確認できます。

FiddlerでHTTP通信を確認する
FiddlerでHTTP通信を確認する

Content.ReadAsStringAsyncメソッド

 サーバーからの応答(レスポンス)を非同期で文字列として取り出すメソッドです。

 バイト配列で取り出すReadAsByteArrayAsyncメソッドや、ストリームとして取り出すReadAsByteArrayAsyncなど、用途に合わせて取り出し方が複数用意されています。

会員登録無料すると、続きをお読みいただけます

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

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

メールバックナンバー

次のページ
値をPOSTする

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

  • 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」など、さまざまなカンファレンスを企画・運営しています。

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

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

メールバックナンバー

アクセスランキング

アクセスランキング