Domanda

OK, ho un cliente che fa un POST a un server con alcuni dati. Il server riceve la posta, e risponde con un redirect. Il problema è che il cliente non reindirizza. Inoltre, ho cercato di controllare la StatusCode della risposta del cliente ottiene, ed è sempre lo stesso "OK". Al posto del codice di reindirizzamento. Che cosa mi manca?

Nel lato client ho qualcosa di simile a questo:

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

Nel lato server che ho appena questa linea:

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

In questo caso, il cliente riceve una risposta e non fa nulla.

Grazie.

È stato utile?

Soluzione

Quando si dispone di "AllowAutoRedirect" impostata su true, significa che l'oggetto HttpWebRequest farà una seconda WebRequest una volta che vede un reindirizzamento. Quando si vede il "200 OK" dall'oggetto risposta, è perché si sta vedendo la risposta per "www.google.com". È possibile controllare il Response.ResponseURI per verificare questo.

È necessario disattivare l'opzione "AllowAutoRedirect", quindi controllare il codice di risposta come Oded detto.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top