Pergunta

Eu tenho que POSTAR alguns parâmetros para uma URL fora da minha rede, e os desenvolvedores do outro lado me pediu para não usar HTTP Parâmetros:em vez disso eu tenho para postar meus valores-chave no Cabeçalhos HTTP.

O fato é que eu realmente não entendo o que eles significam:Eu tentei usar um ajax-como post, com XmlHttp objetos, e também eu tentei escrever no cabeçalho com algo como

Request.Headers.Add(key,value);

mas eu não posso (exceção de quadro);Eu tentei a outra maneira ao redor, usando o objeto de Resposta, como

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

e então redirecionar para a página...mas isso não funciona bem.

É evidente, eu acho, que eu estou preso lá, alguma ajuda?


EDITAR Eu esqueci de dizer que meu ambiente .Net 2.0, c#, no Win server 2003.A exceção que eu tenho é

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

Este parece ser causada pela minha tentativa de Pedido.Adicionar, MS um ano atrás publicado algumas correções de segurança que não permitem isso.

Foi útil?

Solução

Como @lassevk disse, um redirecionamento não vai funcionar.

Você deve usar a classe WebRequest para fazer um HTTP POST em sua página ou aplicativo.Há um exemplo aqui.

Outras dicas

Você já tentou a classe WebClient?Um exemplo pode parecer com:

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

Dê uma olhada no HttpWebRequest.Você deve ser capaz de construir uma solicitação para a URL em questão usando HttpWebRequest.Método = "POST".

Você deveria postar mais informações.

Por exemplo, é este o C#?Parece que não, mas eu poderia estar errado.

Além disso, você dizer que você receber uma exceção, que é o tipo da exceção e a mensagem?

Em qualquer caso, você não pode se redirecionar para a página de POSTAGEM, você precisa enviá-lo a partir do navegador, não a partir do servidor de redirecionamento, por isso, se você deseja automatizar esse, eu acho que seria necessário para gerar uma página html com um formulário de marca, com alguns escondidos campos de entrada e, em seguida, enviá-lo com javascript.

Eu acho que significa que eles não querem que você use parâmetros de URL (GET).Se você usar cabeçalhos de http, não é realmente a consulta através de POSTAR mais.

O que a linguagem/framework?

Utilizando Python e httplib2, você deve ser capaz de fazer algo como:

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

Eu acredito que o objeto do Pedido só iria aceitar um determinado conjunto predefinido de cabeçalhos.

Há uma enumeração que lista todas as edições de Cabeçalhos HTTP demais.

Mas eu não me lembro no momento...Eu vou procurá-lo em um seg...

Eu testei o cenário com 2 páginas de amostra usando XmlHttpRequest opção.Cabeçalhos personalizados estão disponíveis na página aspx postado, usando XmlHttpRequest.

Criar as seguintes 2 páginas.Certifique-se de que a página aspx é uma solução , de modo que você pode executar o depurador, defina o ponto de interrupção e inspecionar o Pedido.Cabeçalho coleção.

<html>

<head>

&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;

</head> <body> <form> <input type="button" value="Click Me" OnClick="SendRequest();" /> </form> </body> </html>


CheckHeader.aspx

a utilização de Sistema;

usando o Sistema.Web;

usando o Sistema.Da Web.INTERFACE do usuário;

classe parcial pública CheckHeader :Do sistema.Da Web.INTERFACE de usuário.Página

{

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

}

Homem..Este editor de html é uma merda..ou não sei como usá-lo...

A exceção que eu estava enfrentando ontem foi causado pelo meu estúpido tentar escrever sobre os cabeçalhos das já construídas página.

Quando eu comecei a criar meu Pedido de um dos seguintes mothods indicado aqui, eu poderia escrever o meu cabeçalhos.

Agora eu estou usando o objeto WebRequest, como no exemplo indicado por @sectrean, aqui.

Muito obrigado a todos.StackOverflow rochas :-)

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