MetroStyleApp入門 vol25.Webからデータを取得する

金曜日 , 29, 6月 2012 Leave a comment

(本記事はVisualStudio2012RC&Windows8RPで確認しております)

 

 今回はWebサービスからデータを取得する方法を紹介します。

 

HttpClientクラス

 

 Windows Phoneをはじめ.NETで利用してきたWebClientクラスはWinRTでは利用できません(HttpWebRequestは利用可能)。

 その代わりにHttpClientクラスを利用します。

 

 HttpClientはasync / awaitを使い以下のように記述できます。

 

            var client = new HttpClient();
            HttpResponseMessage response;

            try
            {
                response = await client.GetAsync("{URL}");
            }
            catch (HttpRequestException)
            {
                // エラー処理
            }
            // データを取得
            var str = await response.Content.ReadAsStringAsync();

 

認証処理

 

 HttpClientクラスでBasic認証などのかかった通信を行う場合はAuthenticationHeaderValueクラスを利用します。

 

// Basic認証の場合、Base64されたID、PASSから生成した文字列を利用
var authHeader = new AuthenticationHeaderValue("Basic",System.Convert.ToBase64String(System.Text.UTF8Encoding.UTF8.GetBytes(string.Format("{0}:{1}", username, password))));

var client = new HttpClient();
client.DefaultRequestHeaders.Authorization = authHeader;

var response = await client.GetAsync("{URL}");

 

なんかエラー

 

 HttpClientクラスを利用した際に以下のようなエラーが発生しました。

 

“アクセス許可で禁じられたソケットにアクセスしようとしました”

エラーコードは1013

 

どうも192.168のローカル環境にアクセスしようとしたせいのようです。

バグといってよいのかわかりませんが、WindowsフォームアプリケーションなどでWebClientクラスを使うと同様の環境でもアクセスできたので注意です。

 

HttpWebRequestクラスを用いたサンプルは

MetroStyleApp入門 vol5.HTTP通信

MetroStyleApp入門 vol6.HTTP通信その2

を参考にしてみてください(CP版の記事ですが変更はないはずです)。

 

 

 


Please give us your valuable comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です