我正在使用spring webflow编写代码来浏览网站。
我必须使用他的set-cookie标头更新我的cookie,否则我的会话将被终止。
有时请求可能会遇到webException,因此我需要捕获cookie更新的webException响应标头,以便我的下一个请求仍然有效
问题发生在超时异常,其他例外如503工作正常。 webRespones总是为null但是我可以看到服务器已经响应了标题部分并且只是停留在fiddler中发送正文部分。我的会话将被终止,而不会正确捕获标头响应。有没有解决这个问题?
try
{
HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create("http://example.com");
webRequest.CookieContainer = new CookieContainer();
webRequest.CookieContainer.Add(cookieCollection);
webRequest.Timeout = 20000;
webRequest.ReadWriteTimeout = 20000;
using (HttpWebResponse webResponse = (HttpWebResponse)webRequest.GetResponse())
{
//A function handling the cookie adding
AddCookies(webResponse.Headers, cookieCollection, webResponse.ResponseUri.Host);
}
}
catch (WebException ex)
{
HttpWebResponse webResponse = ex.Response as HttpWebResponse;
if (webResponse == null) throw ex;
//Null webResponse when timeout, the received header information is dropped.
AddCookies(webResponse.Headers, cookieCollection, webResponse.ResponseUri.Host);
}
答案 0 :(得分:2)
超时异常在客户端实现,因此响应将为null。您可以使用原始套接字来实现get,但最简单的解决方案可能是增加超时值,以便获得响应。