Domanda

Devo PUBBLICARE alcuni parametri su un URL esterno alla mia rete e gli sviluppatori dall'altra parte mi hanno chiesto di non utilizzare i parametri HTTP:invece devo pubblicare i miei valori-chiave in Intestazioni HTTP.

Il fatto è che non capisco bene cosa significhino:Ho provato a utilizzare un post in stile ajax, con oggetti XmlHttp, e ho anche provato a scrivere nell'intestazione con qualcosa del tipo

Request.Headers.Add(key,value);

ma non posso (eccezione dal quadro);Ho provato il contrario, utilizzando l'oggetto Response like

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

e poi reindirizzare alla pagina...ma anche questo non funziona.

È evidente, credo, che sono bloccato lì, qualche aiuto?


MODIFICARE Ho dimenticato di dirti che il mio ambiente è .Net 2.0, c#, su Win server 2003.L'eccezione che ho ottenuto è

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

Sembra che sia causato dal mio tentativo di Request.Add, MS un anno fa ha pubblicato alcune correzioni di sicurezza che non lo consentono.

È stato utile?

Soluzione

Come ha detto @lassevk, un reindirizzamento non funzionerà.

Dovresti utilizzare la classe WebRequest per eseguire un POST HTTP dalla tua pagina o applicazione.C'è un esempio Qui.

Altri suggerimenti

Hai provato la classe WebClient?Un esempio potrebbe essere simile a:

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

Dai un'occhiata a HttpWebRequest.Dovresti essere in grado di costruire una richiesta all'URL in questione utilizzando HttpWebRequest.Method = "POST".

Dovresti postare più informazioni.

Ad esempio, è C#?Sembra di sì, ma potrei sbagliarmi.

Inoltre, dici di ricevere un'eccezione, qual è il tipo e il messaggio dell'eccezione?

In ogni caso, non puoi reindirizzare a una pagina per POST, devi inviarla dal browser, non dal reindirizzamento del server, quindi se vuoi automatizzare questo, immagino che dovresti generare una pagina html con un tag del modulo, con alcuni campi di input nascosti, e quindi inviarlo con javascript.

Penso che intendano dire che non vogliono che tu utilizzi i parametri URL (GET).Se utilizzi le intestazioni http, non viene più eseguita alcuna query tramite POST.

Quale linguaggio/quadro?

Usando Python e httplib2, dovresti essere in grado di fare qualcosa come:

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

Credo che l'oggetto Request accetterebbe solo un certo insieme di intestazioni predefinite.

C'è un'enumerazione che elenca anche tutte le intestazioni HTTP supportate.

Ma al momento non riesco a ricordarmelo...Lo cercherò tra un attimo...

Ho testato il tuo scenario utilizzando 2 pagine di esempio utilizzando l'opzione XmlHttpRequest.Le intestazioni personalizzate sono disponibili nella pagina aspx pubblicata in, utilizzando XmlHttpRequest.

Crea le seguenti 2 pagine.Assicurati che la pagina aspx sia in a solution , in modo da poter eseguire il debugger, impostare il punto di interruzione e controllare la raccolta Request.Header.

<html>

<testa>

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


CheckHeader.aspx

utilizzando il sistema;

utilizzando System.Web;

utilizzando System.Web.UI;

classe parziale pubblica 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();
}

}

Uomo..Questo editor html fa schifo..oppure non so come usarlo...

L'eccezione che ho dovuto affrontare ieri è stata causata dal mio stupido tentativo di scrivere sulle intestazioni della pagina già creata.

Quando ho iniziato a creare la mia Richiesta seguendo uno dei metodi qui indicati, ho potuto scrivere le mie intestazioni.

Ora sto utilizzando l'oggetto WebRequest, come nell'esempio indicato da @sectrean, Qui.

Grazie mille a tutti.StackOverflow rocce :-)

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