【问题标题】:WPF - Web Request being truncatedWPF - Web 请求被截断
【发布时间】:2010-12-10 19:04:14
【问题描述】:

我正在使用 bing api 来请求一些结果。当我运行我的代码时,响应字符串被截断,因此它缺少前 10-50 个字符。当我在浏览器中粘贴完全相同的请求时,它返回结果就好了。。

这是我的代码..我做错了什么?

            string AppId = "My APP ID HERE :O ";
        string url = "http://api.search.live.net/xml.aspx?Appid={0}&sources={1}&query={2}";
        string completeUri = String.Format(url, AppId, "web", validateforweb(Artist) + "%20" + validateforweb(Song) + "%20" + "Lyrics");
        HttpWebRequest webRequest = null;
        webRequest = (HttpWebRequest)WebRequest.Create(completeUri);
        HttpWebResponse webResponse = null;
        webResponse = (HttpWebResponse)webRequest.GetResponse();
        XmlReader xmlReader = null;
        Stream s = webResponse.GetResponseStream();
        xmlReader = XmlReader.Create(s);
        StreamReader reader;
        reader = new StreamReader(s);
        string str = reader.ReadToEnd();

【问题讨论】:

  • 你为什么不试试 WebClient.DownloadString() 。干净多了。并且将允许您编写不太复杂的代码。这意味着更少的错误。

标签: wpf xml httpwebrequest httpwebresponse


【解决方案1】:

我怀疑这与您在流上创建 2 个阅读器(XmlReaderStreamReader)这一事实有关。 XmlReader 在创建后立即开始从流中缓冲数据,因此当StreamReader 开始从同一流中读取时,它会丢失由XmlReader 缓冲的部分数据。

您不能在同一个流上使用 2 个阅读器,它们会相互冲突。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-07-07
    • 1970-01-01
    • 1970-01-01
    • 2019-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多