Frage

Ich muss einige Parameter an eine URL außerhalb meines Netzwerks posten und die Entwickler auf der anderen Seite haben mich gebeten, keine HTTP-Parameter zu verwenden:Stattdessen muss ich meine Schlüsselwerte in posten HTTP-Header.

Tatsache ist, dass ich nicht wirklich verstehe, was sie bedeuten:Ich habe versucht, einen Ajax-ähnlichen Beitrag mit XmlHttp-Objekten zu verwenden, und ich habe auch versucht, so etwas in den Header zu schreiben

Request.Headers.Add(key,value);

aber ich kann nicht (Ausnahme vom Framework);Ich habe es andersherum versucht und das Response-Objekt verwendet

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

und dann auf die Seite weiterleiten...aber das funktioniert auch nicht.

Es ist offensichtlich, denke ich, dass ich dort feststecke. Gibt es Hilfe?


BEARBEITEN Ich habe vergessen, Ihnen zu sagen, dass meine Umgebung .Net 2.0, c#, auf Windows Server 2003 ist.Die Ausnahme, die ich bekam, ist

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

Dies scheint auf meine vorläufige Anfrage zu Request.Add zurückzuführen zu sein. MS hat vor einem Jahr einige Sicherheitsupdates veröffentlicht, die dies nicht zulassen.

War es hilfreich?

Lösung

Wie @lassevk sagte, funktioniert eine Weiterleitung nicht.

Sie sollten die WebRequest-Klasse verwenden, um einen HTTP-POST von Ihrer Seite oder Anwendung aus durchzuführen.Es gibt ein Beispiel Hier.

Andere Tipps

Haben Sie die WebClient-Klasse ausprobiert?Ein Beispiel könnte so aussehen:

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

Schauen Sie sich HttpWebRequest an.Sie sollten in der Lage sein, mit HttpWebRequest.Method = „POST“ eine Anfrage an die betreffende URL zu erstellen.

Sie sollten weitere Informationen veröffentlichen.

Ist das zum Beispiel C#?Es sieht so aus, aber ich könnte mich irren.

Sie sagen außerdem, dass Sie eine Ausnahme erhalten. Was ist der Ausnahmetyp und die Meldung?

In jedem Fall können Sie für POST nicht auf eine Seite umleiten. Sie müssen diese über den Browser senden, nicht über die Serverumleitung. Wenn Sie dies also automatisieren möchten, müssten Sie meiner Meinung nach eine HTML-Seite mit generieren ein Formular-Tag mit einigen versteckten Eingabefeldern und senden Sie es dann mit Javascript.

Ich denke, sie meinen, sie wollen nicht, dass Sie URL-Parameter (GET) verwenden.Wenn Sie HTTP-Header verwenden, erfolgt die Abfrage nicht mehr wirklich über POST.

Welche Sprache/welcher Rahmen?

Mit Python und httplib2 sollten Sie in der Lage sein, Folgendes zu tun:

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

Ich glaube, dass das Request-Objekt nur einen bestimmten Satz vordefinierter Header akzeptieren würde.

Es gibt auch eine Aufzählung, die alle unterstützten HTTP-Header auflistet.

Aber ich kann mich im Moment nicht daran erinnern...Ich schaue gleich nach...

Ich habe Ihr Szenario anhand von zwei Beispielseiten mit der Option XmlHttpRequest getestet.Benutzerdefinierte Header sind auf der ASPX-Seite verfügbar, auf der mit XmlHttpRequest gepostet wird.

Erstellen Sie die folgenden 2 Seiten.Stellen Sie sicher, dass sich die ASPX-Seite in einer Lösung befindet, damit Sie sie im Debugger ausführen, einen Haltepunkt festlegen und die Request.Header-Sammlung überprüfen können.

<html>

<Kopf>

&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="Klick mich" OnClick="SendRequest();" /> </form> </body> </html>


CheckHeader.aspx

Verwenden des Systems;

mit System.Web;

mit System.Web.UI;

öffentliche Teilklasse 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();
}

}

Mann..Dieser HTML-Editor ist scheiße.oder ich weiß nicht, wie ich es benutzen soll ...

Die Ausnahme, mit der ich gestern konfrontiert war, wurde durch meinen dummen Versuch verursacht, in die Kopfzeilen der bereits erstellten Seite zu schreiben.

Als ich mit der Erstellung meiner Anfrage nach einer der hier angegebenen Methoden begann, konnte ich meine Kopfzeilen schreiben.

Jetzt verwende ich das WebRequest-Objekt, wie in dem von @sectrean angegebenen Beispiel. Hier.

Vielen Dank an alle.StackOverflow rockt :-)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top