none
用FileStream对象保存文件后发现内容被更改 RRS feed

  • 问题

  • 碰到一个奇怪的问题。
    用WebRequest,WebResponse对象从服务器获取一个xml文件,用FileStream对象保存文件后发现内容被更改,比如“Stand”被改成“Qtand”,"Price"被改成"Priae"。把url放到IE浏览器,返回的xml内容是正确。而且目前只有一台机器上的客户端出现这个问题,其他多台机器都没有问题。
    主要代码如下:

    WebRequest request = WebRequest.Create(url);
    WebResponse response = request.GetResponse();
    long ContentLength = response.ContentLength;
    Stream stream = response.GetResponseStream();
    byte[] bytes = new byte[ContentLength];
    FileStream fs = new FileStream(localfile, FileMode.Create);
    fs.Write(bytes, 0, bytes.Length);
    fs.Flush();
    fs.Close();
    response.Close();

    请高手帮忙想想怎么个解决法。非常感谢。

    2013年12月27日 7:17

答案

  • 你好:

    你可以使用其它方式来代替看看,比如使用XmlDocument类:

    XmlDocument doc = new XmlDocument();
                doc.Load("http://msdn.microsoft.com/en-us/magazine/rss/default.aspx?z=z&iss=1");
                XmlNode rss = doc.SelectSingleNode("//rss");

    我怀疑有可能是xml编码的原因,默认的XmlDocument.Load使用的事UTF-8的编码,打开应该是不会有问题的。

    你也可以修改一下读取响应流的编码看看是否有效果:

    WebRequest request = WebRequest.Create(url);
                WebResponse response = request.GetResponse();
                long ContentLength = response.ContentLength;
                StreamReader sr = new StreamReader(response.GetResponseStream(), Encoding.UTF8);


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.


    2013年12月30日 7:04
    版主

全部回复

  • 代码没有问题,你找找其它原因吧。

    2013年12月27日 7:43
  • 谢谢。

    机器也换过内存,查了下病毒。问题依旧,实在找不到原因。

    2013年12月27日 7:45
  • 你好:

    你可以使用其它方式来代替看看,比如使用XmlDocument类:

    XmlDocument doc = new XmlDocument();
                doc.Load("http://msdn.microsoft.com/en-us/magazine/rss/default.aspx?z=z&iss=1");
                XmlNode rss = doc.SelectSingleNode("//rss");

    我怀疑有可能是xml编码的原因,默认的XmlDocument.Load使用的事UTF-8的编码,打开应该是不会有问题的。

    你也可以修改一下读取响应流的编码看看是否有效果:

    WebRequest request = WebRequest.Create(url);
                WebResponse response = request.GetResponse();
                long ContentLength = response.ContentLength;
                StreamReader sr = new StreamReader(response.GetResponseStream(), Encoding.UTF8);


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.


    2013年12月30日 7:04
    版主