BASIC認証の掛かったウェブサイトにアクセスします。レスポンスを扱うのにRxを使っていますので、Microsoft.Phone.ReactiveとSystem.Observableを参照しておく必要があります。
HttpWebRequestクラスを使ってBASIC認証する
まずはHttpWebRequestクラスを使ってBasic認証を行います。CreateHttpメソッドでインスタンスを生成します。Credentialsプロパティに認証情報を設定し、BeginXXX/EndXXXでリクエストレスポンスを取得するので、Observable.FromAsyncPatternメソッドで包んでいます。
// using Microsoft.Phone.Reactive; // HttpWebRequestクラスを使ったBASIC認証 private void btnBasic_Click(object sender, RoutedEventArgs e) { var req = HttpWebRequest.CreateHttp("http://www.maido3.com/server/script/htaccess/"); req.Credentials = new NetworkCredential("big-server", "test"); Observable.FromAsyncPattern<WebResponse>(req.BeginGetResponse, req.EndGetResponse)() .Select(res => new System.IO.StreamReader(res.GetResponseStream()).ReadToEnd()) .ObserveOnDispatcher() .Subscribe(msg => MessageBox.Show(msg) , ex => MessageBox.Show(ex.Message)); }
WebClientクラスを使ってBASIC認証する
WebClientクラスを使ってBASIC認証の掛かったウェブサイトにアクセスします。レスポンスを扱うのにReactive Extensionsを使っています。
WebClientクラスを使ってBasic認証を行います。Basic認証用IDとパスワードでNetworkCredentialクラスの認証オブジェクトを生成して、WebClientクラスの`Credentialsプロパティ`に設定をします。
あとは、DownloadStringAsyncメソッドを実行してダウンロードをおこなうだけです。
// using Microsoft.Phone.Reactive; // WebClientクラスを使ったBASIC認証 private void btnBasic_Click(object sender, RoutedEventArgs e) { var wc = new WebClient(); wc.Credentials = new NetworkCredential("big-server", "test"); Observable.FromEvent<DownloadStringCompletedEventArgs>(wc, "DownloadStringCompleted") .Select(result => result.EventArgs.Result) .ObserveOnDispatcher() .Subscribe(msg => MessageBox.Show(msg) , ex => MessageBox.Show(ex.Message)); wc.DownloadStringAsync(new Uri("http://www.maido3.com/server/script/htaccess/")); }