asp.net - servidor - no se puede mostrar la página que busca porque se está usando un método no válido verbo http
HTTP POST-Estoy atascado (9)
Tengo que enviar algunos parámetros a una URL fuera de mi red, y los desarrolladores del otro lado me pidieron que no use parámetros de HTTP: en su lugar, tengo que publicar mis pares clave-valor en encabezados HTTP .
El hecho es que realmente no entiendo lo que significan: traté de usar una publicación parecida a Ajax, con objetos XmlHttp, y también traté de escribir en el encabezado con algo así como
Request.Headers.Add(key,value);
pero no puedo (excepción del marco); Intenté al revés, usando el objeto Response como
Response.AppendHeader("key", "value");
y luego redirigir a la página ... pero esto tampoco funciona.
Es evidente, creo, que estoy atrapado allí, ¿alguna ayuda?
EDITAR Olvidé decirte que mi entorno es .Net 2.0, c #, en Win Server 2003. La excepción que obtuve es
System.PlatformNotSupportedException was unhandled by user code
Message="Operation is not supported on this platform."
Source="System.Web"
Parece que fue causado por mi intento de Request.Add, MS hace un año publicó algunas correcciones de seguridad que no permiten esto.
¿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);
¿Qué idioma / marco?
Usando Python y httplib2, debería poder hacer algo como:
http = httplib2.Http()
http.request(url, ''POST'', headers={''key'': ''value''}, body=urllib.urlencode(''''))
Creo que el objeto Request solo aceptará un determinado conjunto de encabezados predefinidos.
Hay una enumeración que enumera todos los encabezados HTTP admitidos también.
Pero no puedo recordarlo en este momento ... Lo buscaré en un segundo ...
Creo que quieren decir que no quieren que uses parámetros de URL (GET). Si usa encabezados http, en realidad ya no está consultando a través de POST.
Deberías publicar más información.
Por ejemplo, ¿esto es C #? Parece que sí, pero podría estar equivocado.
Además, dice que recibe una excepción, ¿cuál es el tipo y mensaje de excepción?
En cualquier caso, no puede redireccionar a una página para POST, debe enviarla desde el navegador, no desde el servidor, por lo que si desea automatizar esto, supongo que necesitaría generar una página html con una etiqueta de formulario, con algunos campos de entrada ocultos, y luego enviarla con javascript.
Eche un vistazo a HttpWebRequest. Debería poder generar una solicitud a la URL en cuestión utilizando HttpWebRequest.Method = "POST".
Probé tu escenario usando 2 páginas de muestra usando la opción XmlHttpRequest. Los encabezados personalizados están disponibles en la página aspx publicada en, utilizando XmlHttpRequest.
Crea las siguientes 2 páginas. Asegúrese de que la página aspx está en una solución, para que pueda ejecutar el depurador, establecer punto de interrupción e inspeccionar la colección Request.Header.
<html>
<head>
< script language="javascript">
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);
}
< script / >
</ head> <body> <form> <input type = "button" value = "Haga clic en mí" OnClick = "SendRequest ();" /> </ form> </ body> </ html>
CheckHeader.aspx
usando el sistema;
usando System.Web;
usando System.Web.UI;
clase parcial pública CheckHeader: System.Web.UI.Page
{
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 sé cómo usarlo ...
Como dijo @lassevk, una redirección no funcionará.
Debe usar la clase WebRequest para hacer un HTTP POST desde su página o aplicación. Hay un ejemplo aquí .
La excepción que enfrentaba 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 criterios indicados aquí, podía escribir mis encabezados.
Ahora estoy usando el objeto WebRequest, como en la muestra indicada por @sectrean, aquí .
Muchas gracias a todos. Rocas de :-)