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.

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top