OK,我有一个客户做一个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);

在这种情况下,客户端接收的应答,并且不做任何事。

感谢。

有帮助吗?

解决方案

当你有“AllowAutoRedirect”设置为true,就意味着你的HttpWebRequest对象会做出第二次的WebRequest一旦它看到一个重定向。当你看到从响应对象中的“200 OK”,那是因为你看到的“www.google.com”的响应。您可以检查Response.ResponseURI验证这一点。

您需要关闭“AllowAutoRedirect”,然后检查响应代码像奥德说。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top