読者です 読者をやめる 読者になる 読者になる

酢ろぐ!

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

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

Windows Store Apps

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

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

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

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

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

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

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)))
{
    // ダウンロードさせた後の処理
}