酢ろぐ!

カレーが嫌いなスマートフォンアプリプログラマのブログ。

WindowsストアアプリでHttpClientクラスを使ってReferrer等のリクエストヘッダを指定してインターネット上のリソースへアクセスする

本記事では、WindowsストアアプリでHttpClientを使ってReferrer等のリクエストヘッダを指定してインターネット上のリソースへアクセスする方法を紹介します。

以前、「MetroスタイルアプリでHttpWebRequestを使って画像をダウンロードさせる方法」をご紹介しました。

しかし、とあるウェブサイトの画像を取得する為には、Refererに特定のアドレスを設定する必要があったのですが、HttpWebRequestクラスにはRefererプロパティが存在せずHeadersプロパティ経由でRefererを変更する事ができませんでした。以下のコードの様な設定の仕方では、7/24時点のRelease Previewでは例外が吐かれてしまいます。

|cs| HttpWebRequest req = GetRequest(); req.Headers[HttpRequestHeader.Referer] = "http://ch3cooh.jp/"; ||<

Windowsストアアプリでは、インターネット上のリソースにアクセスする方法としてHttpWebRequestクラス以外にもHttpClientクラスが提供されています。こちらのHttpClientクラスにはリクエストヘッダーを管理するDefaultRequestHeadersプロパティがあります。

「Referrer」以外にも例えば「UserAgent」なども設定する事ができます。

|cs| var url = "http://ch3cooh.jp/wp-content/uploads/2010/12/6sxlsd84.jpg"; var client = new HttpClient(); client.DefaultRequestHeaders.Referrer = new Uri("http://ch3cooh.jp/"); using (var strm = await client.GetStreamAsync(new Uri(url))) { // ダウンロードさせた後の処理 } ||<

** 参考資料