2010-02-08 29 views
5

OK, tôi có một khách hàng đang thực hiện POST cho máy chủ với một số dữ liệu. Máy chủ nhận được bài đăng và câu trả lời với chuyển hướng. Vấn đề là khách hàng không chuyển hướng. Ngoài ra, tôi đã cố gắng kiểm tra StatusCode của phản hồi mà khách hàng nhận được và nó luôn giống "OK". Thay vì mã chuyển hướng. Tôi đang thiếu gì?ASP HttpWebRequest and Redirect

Ở phía khách hàng tôi có một cái gì đó như thế này:

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) {} 

Ở phía máy chủ tôi chỉ có dòng này:

HttpContext.Current.Response.Redirect("http://www.google.com", true); 

Trong trường hợp này, khách hàng nhận được một câu trả lời và không không làm gì cả.

Cảm ơn.

Trả lời

6

Khi bạn đã đặt "AllowAutoRedirect" thành true, điều đó có nghĩa là đối tượng HttpWebRequest của bạn sẽ thực hiện yêu cầu web thứ 2 khi nó thấy chuyển hướng. Khi bạn thấy "200 OK" từ đối tượng phản hồi, đó là vì bạn đang thấy phản hồi cho "www.google.com". Bạn có thể kiểm tra Response.ResponseURI để xác minh điều này.

Bạn sẽ cần phải tắt "AllowAutoRedirect", sau đó kiểm tra mã phản hồi như Oded đã nói.