【问题标题】:How do I resend a "failed" WebRequest?如何重新发送“失败”的 WebRequest?
【发布时间】:2013-03-07 10:03:10
【问题描述】:

我发送的 POST 和 GET WebRequest 应该支持更长时间的互联网中断。这个想法是将失败(超时)的网络请求排队并尝试定期重新发送它们,直到互联网再次启动并发送所有排队的网络请求。

但是,我似乎不能只重用旧的 WebRequest。我需要重新设置吗?

IAsyncResult result = request.BeginGetResponse (o => {
        callCallback (o);
}, state);

当请求只是使用设置时:

var request = HttpWebRequest.Create (String.Format (@"{0}/{1}", baseServiceUrl, path)); 
request.Method = "GET";
request.ContentType = "application/xml; charset=UTF-8";
request.Headers.Add ("Authority", account.Session);
return request;

它工作正常。但是在超时(和request.Abort ();)并在同一个webrequest上调用BeginGetResponse()之后就会冻结。

【问题讨论】:

标签: c# mono webrequest


【解决方案1】:

您不能在同一个HttpWebRequest 上多次调用BeginGetResponse()。我不确定 .NET 是否支持,但 Mono 的实现是不可能的(也不是很容易改变的东西)。

另见Can I reuse HttpWebRequest without disconnecting from the server? - 底层网络连接将被重用。

【讨论】:

  • 谢谢。我通过围绕 WebRequest 创建一个包装器来解决它,该包装器存储用于设置请求的数据。这能够重新创建它。
  • 我喜欢这些答案。我知道怎么做,但我不会与其他人分享。
猜你喜欢
  • 2012-02-11
  • 2020-11-09
  • 2012-08-04
  • 2015-12-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-15
  • 1970-01-01
相关资源
最近更新 更多