好的,我有一个客户端使用一些数据对服务器进行POST。服务器接收帖子,并使用重定向进行回答。问题是客户端没有重定向。此外,我试图检查客户端获得的响应的StatusCode,它总是相同的“OK”。而不是重定向代码。我错过了什么?
在客户端,我有类似的东西:
StringBuilder sb;
try
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://localhost/serv/Default.aspx");
request.Method = "POST";
byte[] data = Encoding.ASCII.GetBytes(GetDATA());
request.ContentType = "text/xml";
request.ContentLength = data.Length;
Stream stream = request.GetRequestStream();
stream.Write(data, 0, data.Length);
request.AllowAutoRedirect = true;
request.MaximumAutomaticRedirections = 10;
HttpWebResponse response = (HttpWebResponse) request.GetResponse();
response.Close(); } catch(Exception ex) {}
在服务器端,我只有这一行:
HttpContext.Current.Response.Redirect("http://www.google.com", true);
在这种情况下,客户端会收到答案而不会做任何事情。
感谢。
答案 0 :(得分:6)
当您将“AllowAutoRedirect”设置为true时,这意味着您的HttpWebRequest对象在看到重定向后将进行第二次webrequest。当您从响应对象中看到“200 OK”时,这是因为您看到了“www.google.com”的响应。您可以检查Response.ResponseURI以验证这一点。
您需要关闭“AllowAutoRedirect”,然后像Oded所说的那样检查响应代码。