Pregunta

Esto me está volviendo loco y no puedo averiguar dónde estoy dejando caer la pelota. He seguido algunos ejemplos que se encuentran a través de la googlemonsta en vano. Cualquier indicación del lugar donde metí la pata se apperciated en gran medida.

        var writer = new StringWriter();
        param = "location=" + Server.UrlEncode(param);
        byte[] paramStream = Encoding.ASCII.GetBytes(param + "&param2=value");
        var URL = "http://www.somesite.com";
        HttpWebRequest request = (HttpWebRequest)WebRequest.Create(URL);
        request.Method = "POST";
        request.ContentType = "application/x-www-form-urlencoded";
        request.UserAgent = "Mozilla/5.0 (Windows; U; Windows NT 6.0; sv-SE; rv:1.9.1b2) Gecko/20081201 Firefox/3.1b2";
        request.ContentLength = paramStream.Length;
        using( var stream = request.GetRequestStream())
        {
            stream.Write(paramStream, 0, paramStream.Length);
        }

        var response = request.GetResponse();

        string result;
        using (var sr = new StreamReader(response.GetResponseStream()))
        {
            result = sr.ReadToEnd();
        }

Gracias!

EDIT: Por lo que yo puedo decir su golpear el sitio (me estoy poniendo html espalda), pero los parametros no son empujados más. básicamente me estoy haciendo por el que los tenían los valores que ha tenido éxito. He intentado quitar la primera y en cualquier lugar, pero no pudimos.

EDIT:. código editado para reflejar los cambios

¿Fue útil?

Solución

Es posible deshacerse de la Y desde el inicio del primer parámetro? Aparte de eso, básicamente, se ve bien. (Marque los nombres de los parámetros en su código real - en el que tienes "parámetro de" en la muestra se debe casi con toda seguridad "parámetro" -, pero no sabemos cuál es su código real parece o lo que el sitio real de espera.)

Por favor, dar más información acerca de lo que está sucediendo realmente. Sabemos que no funciona, pero hay un montón de diferentes modos de fallo posibles:)

Un pensamiento adicional se produce - no se ha especificado la longitud del contenido. No estoy seguro de si esto se rellena automáticamente por WebRequest. Sería digno de usar WireShark para comprobar si es o no es presente en la petición de salida.

Al igual que un punto general de la práctica, se debe disponer de la WebResponse, y que no es necesario llamar a Close si ya tienes una declaración using para la secuencia de respuesta:

string result;
using (WebResponse response = request.GetResponse())
{
    using (var sr = new StreamReader(response.GetResponseStream()))
    {
        result = sr.ReadToEnd();
    }
}

Otros consejos

¿Está seguro de tener toda la neccessary valores para el puesto? Una vez tuve un caso en el que había un campo de entrada oculto en el formulario que era algo como:

<input name="action" type="hidden" id="action" value="login">

y que tenía que suministrar un parámetro que a medida como:

&action=login

Asegúrese de que no se está perdiendo algo de la forma es lo que estoy diciendo ...

EDIT: Una cosa más: Yo miraba a mi código de nuevo cuando lo he hecho, y se dio cuenta que yo también tenía esta línea allí:

request.ContentLength = bytes.Length;

No está seguro si necesita eso, pero me di cuenta de que no estaban colocando la longitud.

No es algo tan simple como un / nueva línea de retorno de carro después de los parámetros es? En cuanto a algunos documentos sobre HTTP en los Internet, que al parecer necesita una línea en blanco después.

(Yo sugeriría un telnet al servidor web y pegando manualmente su solicitud.)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top