1

サイトからXMLファイルを取得するコードがあるので、次のようにします。

WebRequest request = WebRequest.Create(url);
request.Method = "GET";
request.ContentType = "text/xml";

using (WebResponse webResponse = request.GetResponse())
{
    using (Stream responseStream = webResponse.GetResponseStream())
    {
       if (responseStream != null)
        {
            reportXML = XDocument.Load(responseStream.ToString());
        }
    }
    using (XmlWriter writer = XmlWriter.Create(@"C:\Retrieved.xml"))
    {
        reportXML.Save(writer);
    }
 }

しかし、アプリをデバッグしたところ、このコード行のすべてが失われたようで、保存するものがもうありません。

Stream responseStream = webResponse.GetResponseStream())

なぜそうなるのか、何か考えはありますか?

オブジェクトを調査すると、次のように表示されます。

Length='responseStream.Length'はタイプ'System.NotSupportedException'の例外をスローしました

そして、エラーは次のとおりです。

ファイル'C:\ Documents and Settings \ user \ My Documents \ Visual Studio 2010 \ Projects \ Proto \ App \ bin \ Debug\System.Net.ConnectStream'が見つかりませんでした。

4

1 に答える 1

5

これが問題です:

reportXML = XDocument.Load(responseStream.ToString());

ToString()そのようなストリームを呼び出すことは、あなたに何か有用なものを与えることはほとんどありません。ストリームのコンテンツをロードしたいだけの場合は、ToString呼び出しを削除します。

reportXML = XDocument.Load(responseStream);

または、本当にディスクに保存したいだけの場合Stream.CopyToは、最初からXMLとして解析するだけで、わざわざ使用しないでください。

于 2012-11-26T14:52:25.810 に答える