5 Stimmen

Wie sendet man Parameter auf einem Https POST mit C#

Ich habe gefragt aquí wie man den https-Post macht, und jetzt funktioniert das gut. Problem ist jetzt, wie man einen Parameter, Name Abfrage, die ein JSON-String ist zu senden:

{"key1":"value1", "key2":{"key21":"val21"} }

Was ich mache und was nicht funktioniert, ist:

HttpWebRequest q = (HttpWebRequest)WebRequest.Create(Host + ":" + Port);
ServicePointManager.ServerCertificateValidationCallback = new System.Net.Security.RemoteCertificateValidationCallback(AcceptAllCertifications);
q.Method = "POST";
q.ContentType = "application/json";
q.Headers.Add("JSON-Signature", GetFirma(query));
q.Credentials = new NetworkCredential(user,pass);

byte[] buffer = Encoding.UTF8.GetBytes("query=" + query);

q.ContentLength = buffer.Length;

using (Stream stream = q.GetRequestStream())
{
     stream.Write(buffer, 0, buffer.Length);                    
}

Aber der Server antwortet immer mit dem Hinweis, dass es keinen 'query'-Parameter gibt. Jede Hilfe?

9voto

Marc Gravell Punkte 970173

Ich würde verwenden WebClient.UploadValues :

        using (WebClient client = new WebClient())
        {
            NameValueCollection fields = new NameValueCollection();
            fields.Add("query", query);
            byte[] respBytes = client.UploadValues(url, fields);
            string resp = client.Encoding.GetString(respBytes);
        }

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X