トップ回答者
xmlDocumentで認証サイトのxmlをダウンロードできますでしょうか?

質問
-
新規情報の通知機能のあるRSSリーダーで会社内で使えるようなものがなかったので、VisualBasic2008ExpressEditionでRSSリーダーを作っています。
xmlDocumentのLoadメソッドを使ってXML(RSSフィード)をダウンロードしていますが、ほとんど作りこんだところで最後に認証部分を作ろうとしたとき、認証するためにユーザ名やパスワードを入れるようなプロパティが見つからず、
http(s)://ユーザ名:パスワード@サーバ名/パス/XMLファイル名
をURLとしてLoadメソッドの引数にすればいいかと思ったら、だめでした。認証に対応するためにはどうしたらよいでしょうか?
xmlDocumentを使わずに根本的に作り直す必要がありますでしょうか?
回答
すべての返信
-
Hongliang の発言:
XmlDocument に XmlReader を渡す、かな。
XmlReader を作る(Create 静的メソッド)ときに渡す XmlReaderSettings の XmlResolver プロパティに、Credentials プロパティに認証情報を設定した XmlUrlResolver を指定する……というのが基本的な流れかと。
http://msdn.microsoft.com/ja-jp/library/47as68k4.aspx
ありがとうございます。
教えていただいたURLのサンプルだけでは実現できなかったですが、コメントをヒントにサンプルやキーワードで検索して何とかできました。まだテストコードでしか試してませんが、以下のコードで試しました。
FormにButton1とTextBox1をつけただけの状態でボタンをクリックしたときのコードを以下のようにしました。
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim resolver As New XmlUrlResolver()
Dim myCred As System.Net.NetworkCredential
myCred = New System.Net.NetworkCredential("ユーザ名", "パスワード", "")
resolver.Credentials = myCred
Dim settings As New XmlReaderSettings()
settings.XmlResolver = resolver
Dim reader As XmlReader = XmlReader.Create("http://サーバ/パス/ファイル名.xml", settings)
Dim xmldoc As XmlDocument = New XmlDocument()
xmldoc.Load(reader)
TextBox1.Text = xmldoc.OuterXml
End Sub
※「http://サーバ/パス/ファイル名.xml」は、BASIC認証に通らないと見れない状態でテストしてます。
ボタンを押したら、ちゃんとTextBox1に内容が出てきました。