【问题标题】:Downloading with HttpWebRequest使用 HttpWebRequest 下载
【发布时间】:2011-12-10 01:23:12
【问题描述】:

假设我使用HttpWebRequest 调用用python 编写的Web 服务并且该服务返回一个XML 文件。假设下载数据需要 10 秒。

 HttpWebResponse response = (HttpWebResponse)req.GetResponse();

 if(allDate100%Transfered)
 MsgBox.show("u can now CUT your cable. All data is there!!!");

是否有任何财产可以检查是否所有内容都已转移?

因为我想继续,例如将接收到的数据读入一个字符串,但前提是所有数据都已成功下载。

Stream dataStream = response.GetResponseStream();
StreamReader reader = new StreamReader(dataStream);
String xml = reader.ReadToEnd();

我是否从网络服务收到任何消息或标志,告诉我所有数据都确实存在并且我不再需要连接?

编辑:问题仍然存在。我得到不同的答案,而且他们矛盾彼此。

【问题讨论】:

  • 多花点时间在格式和英语上。使用粗体代替大写字母,避免使用感叹号。你的代码不应该说response.GetResponseStream()吗?

标签: c# httpwebrequest


【解决方案1】:

request.GetResponse() 是同步的,这意味着它在下载所有数据之前不会返回。

request.GetResponse() 中的The documentation 声明WebException 在以下情况下被抛出:

  • 之前调用了 Abort。
  • 请求的超时期限已过。
  • 处理请求时出错。

这意味着如果没有抛出异常,一切都会正常。

【讨论】:

  • stackoverflow.com/a/8391670/963546 ; Quote:GetResponse 不会返回完整的响应流。 什么是真实的?
  • 文档中没有任何内容表明其他答案所述的内容是正确的。而且我很难相信除非调用GetResponseStream,否则不会从服务器获取正文。
  • 当我拨打Stream dataStream = response.GetResponseStream();时,网络服务和我之间是否有任何通信?
  • 好吧,我假设相同,但这与现实不符。 response.GetResponseStream(); 似乎仍然需要连接到网络服务。看这里:stackoverflow.com/q/8390282/963546
猜你喜欢
  • 2011-10-10
  • 1970-01-01
  • 2014-12-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多