【问题标题】:HttpWebRequest and WebResponse.GetResponse give incomplete responseHttpWebRequest 和 WebResponse.GetResponse 给出不完整的响应
【发布时间】:2011-09-19 19:47:57
【问题描述】:

我现在非常不安,因为我不断收到来自亚马逊的不完整回复。我正在使用 Product Advertising API,向服务器发出一个 ItemLookup 请求。

C# 代码非常基本:

HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
HttpWebResponse response = (HttpWebResponse) request.GetResponse();

string resultString;
using (StreamReader sr = new StreamReader(response.GetResponseStream()))
{
    resultString = sr.ReadToEnd();
}

我收到的字符数是 17408 - 相当稳定,但我也看到了大约 16k 的字符数。

它总是这样结束:

...ount><CurrencyCode>EUR</CurrencyCode><FormattedPrice>EUR 11,33</FormattedPri

关于 HttpWebRequest 或 Amazon 的 API 有什么我不知道的吗?请帮忙!

the url(不关心密钥)编辑:坏主意,超出限制...

【问题讨论】:

  • 您能否通过在 Web 浏览器中查看该 URL 来复制信息的截断?
  • 没有。在所有浏览器中都能正常工作。
  • 可能与流/流读取器中的缓冲有关?试试冲洗?

标签: c# httpwebrequest amazon response httpwebresponse


【解决方案1】:

这对我有用:

    HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
    HttpWebResponse response = (HttpWebResponse) request.GetResponse();
    Stream s = response.GetResponseStream();
    using (StreamReader sr = new StreamReader(s))
    {
        s.Flush();
        resultString = sr.ReadToEnd();

        ...
    }

【讨论】:

  • 现在我明白了。这个问题是通过冲洗解决的,但在我的代码中的几个地方。 ;) 谢谢大家。
  • 我也有类似的问题。我试图刷新流,但这样做会给我一个 NotSupportedException。知道如何解决吗?
  • 由于GetResponseStreamWebResponse 类的方法,您可以跳过转换WebReponseHttpWebResponse
猜你喜欢
  • 1970-01-01
  • 2018-07-31
  • 1970-01-01
  • 2019-05-05
  • 2016-05-24
  • 1970-01-01
  • 1970-01-01
  • 2012-01-06
  • 1970-01-01
相关资源
最近更新 更多