ASP HttpWebRequest和Redirect

use*_*816 5 c# asp.net http http-redirect web-scraping

好的,我有一个客户端使用一些数据对服务器进行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) {}
Run Code Online (Sandbox Code Playgroud)

在服务器端我只有这一行:

HttpContext.Current.Response.Redirect("http://www.google.com", true);
Run Code Online (Sandbox Code Playgroud)

在这种情况下,客户端会收到答案而不会执行任何操作.

谢谢.

Dav*_*vid 6

当"AllowAutoRedirect"设置为true时,这意味着一旦看到重定向,您的HttpWebRequest对象将进行第二次webrequest.当您从响应对象中看到"200 OK"时,这是因为您看到了"www.google.com"的响应.您可以检查Response.ResponseURI以验证这一点.

您需要关闭"AllowAutoRedirect",然后检查响应代码,如Oded所说.