none
xmlDocumentで認証サイトのxmlをダウンロードできますでしょうか? RRS feed

  • 質問

  • 新規情報の通知機能のあるRSSリーダーで会社内で使えるようなものがなかったので、VisualBasic2008ExpressEditionでRSSリーダーを作っています。
    xmlDocumentのLoadメソッドを使ってXML(RSSフィード)をダウンロードしていますが、ほとんど作りこんだところで最後に認証部分を作ろうとしたとき、認証するためにユーザ名やパスワードを入れるようなプロパティが見つからず、
    http(s)://ユーザ名:パスワード@サーバ名/パス/XMLファイル名
    をURLとしてLoadメソッドの引数にすればいいかと思ったら、だめでした。

    認証に対応するためにはどうしたらよいでしょうか?
    xmlDocumentを使わずに根本的に作り直す必要がありますでしょうか?

    2009年2月16日 13:21

回答

すべての返信

  • XmlDocument に XmlReader を渡す、かな。
    XmlReader を作る(Create 静的メソッド)ときに渡す XmlReaderSettings の XmlResolver プロパティに、Credentials プロパティに認証情報を設定した XmlUrlResolver を指定する……というのが基本的な流れかと。
    http://msdn.microsoft.com/ja-jp/library/47as68k4.aspx

    2009年2月16日 13:53
  •  
    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に内容が出てきました。
    2009年2月17日 14:50