ASP HttpWebRequest e Redirect
-
19-09-2019 - |
Pergunta
OK, eu tenho um cliente fazendo um POST para um servidor com alguns dados. O servidor recebe o post, e responde com um redirecionamento. O problema é que o cliente não redireciona. Além disso, eu tentei verificar o StatusCode da resposta o cliente recebe, e é sempre a mesma "OK". Em vez do código de redirecionamento. O que eu estou ausente?
No lado do cliente eu tenho algo parecido com isto:
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) {}
No lado do servidor Eu tenho apenas esta linha:
HttpContext.Current.Response.Redirect("http://www.google.com", true);
Neste caso, o cliente recebe uma resposta e não faz nada.
Graças.
Solução
Quando você tem "AllowAutoRedirect" definido como verdadeiro, isso significa que o objeto HttpWebRequest fará uma segunda webrequest uma vez que vê um redirecionamento. Quando você vê o "200 OK" do objeto de resposta, é porque você está vendo a resposta para "www.google.com". Você pode verificar o Response.ResponseURI para verificar isso.
Você precisa desligar o "AllowAutoRedirect", em seguida, verificar o código de resposta como Oded disse.