Pregunta

Tengo que PUBLICAR algunos parámetros en una URL fuera de mi red y los desarrolladores del otro lado me pidieron que no usara parámetros HTTP:en su lugar tengo que publicar mis valores-clave en Encabezados HTTP.

El caso es que no entiendo muy bien lo que quieren decir:Intenté usar una publicación similar a ajax, con objetos XmlHttp, y también intenté escribir en el encabezado con algo como

Request.Headers.Add(key,value);

pero no puedo (excepción del marco);Intenté al revés, usando el objeto Respuesta como

Response.AppendHeader("key", "value");

y luego redirigir a la página...pero esto tampoco funciona.

Es evidente, creo, que estoy atrapado ahí, ¿alguna ayuda?


EDITAR Se me olvidó decirte que mi entorno es .Net 2.0, c#, en Win server 2003.La excepción que tengo es

System.PlatformNotSupportedException was unhandled by user code
  Message="Operation is not supported on this platform."
  Source="System.Web"

Esto parece ser causado por mi tentativa de Request.Add, MS publicó hace un año algunas correcciones de seguridad que no permiten esto.

¿Fue útil?

Solución

Como dijo @lassevk, una redirección no funcionará.

Debe utilizar la clase WebRequest para realizar una POST HTTP desde su página o aplicación.hay un ejemplo aquí.

Otros consejos

¿Has probado la clase WebClient?Un ejemplo podría verse así:

        WebClient client = new WebClient();
        NameValueCollection data = new NameValueCollection();
        data["var1"] = "var1";
        client.UploadValues("http://somewhere.com/api", "POST", data);

Eche un vistazo a HttpWebRequest.Debería poder crear una solicitud a la URL en cuestión utilizando HttpWebRequest.Method = "POST".

Deberías publicar más información.

Por ejemplo, ¿esto es C#?Lo parece, pero puede que me equivoque.

Además, dice que obtiene una excepción, ¿cuál es el tipo de excepción y el mensaje?

En cualquier caso, no puede redirigir a una página para POST, debe enviarla desde el navegador, no desde la redirección del servidor, por lo que si desea automatizar esto, supongo que necesitará generar una página html con una etiqueta de formulario, con algunos campos de entrada ocultos, y luego enviarlo con javascript.

Creo que quieren decir que no quieren que uses parámetros de URL (GET).Si usa encabezados http, ya no se realizará una consulta a través de POST.

¿Qué lenguaje/marco?

Usando Python y httplib2, deberías poder hacer algo como:

http = httplib2.Http()
http.request(url, 'POST', headers={'key': 'value'}, body=urllib.urlencode(''))

Creo que el objeto Solicitud solo aceptaría un determinado conjunto de encabezados predefinidos.

También hay una enumeración que enumera todos los encabezados HTTP admitidos.

Pero no puedo recordarlo en este momento...Lo buscaré en un segundo...

Probé su escenario usando 2 páginas de muestra usando la opción XmlHttpRequest.Los encabezados personalizados están disponibles en la página aspx publicada mediante XmlHttpRequest.

Crea las siguientes 2 páginas.Asegúrese de que la página aspx esté en una solución, para que pueda ejecutarla en el depurador, establecer el punto de interrupción e inspeccionar la colección Request.Header.

<html>

<cabeza>

&lt; script language="javascript"&gt;

function SendRequest()
{
    var r = new XMLHttpRequest();
    r.open('get', 'http://localhost/TestSite/CheckHeader.aspx');
    r.setRequestHeader('X-Test', 'one');
    r.setRequestHeader('X-Test', 'two');
    r.send(null);

}
&lt; script / &gt;

u003C/head>nu003Cbody>nu003Cform>nu003Cinput type="button" value="Click Me" OnClick="SendRequest();" />nu003C/form>nu003C/body>nu003C/html>


ComprobarEncabezado.aspx

usando Sistema;

usando System.Web;

utilizando System.Web.UI;

clase parcial pública CheckHeader:Página.UI.Web.del.sistema

{

protected void Page_Load(object sender, EventArgs e)
{
    string value = string.Empty;
    foreach (string key in Request.Headers)
        value = Request.Headers[key].ToString();
}

}

Hombre..Este editor html apesta...o no se como usarlo...

La excepción a la que me enfrenté ayer fue causada por mi estúpido intento de escribir en los encabezados de la página ya creada.

Cuando comencé a crear mi Solicitud siguiendo uno de los métodos indicados aquí, pude escribir mis encabezados.

Ahora estoy usando el objeto WebRequest, como en el ejemplo indicado por @sectrean, aquí.

Muchas gracias a todos.StackOverflow rocas :-)

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