2009-10-08 16 views
5

Ich habe here gefragt, wie man den https-Beitrag macht, und jetzt funktioniert das gut. Problem ist nun, wie ein Parameter, Namensabfrage zu schicken, wich ist eine json string:Wie man Parameter auf einem HTTP-POST mit C sendet #

{ "key1": "Wert1", "key2": { "Key21": "val21"}}

Was ich mache und 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 immer antworten sagen, es gibt keine ‚query‘ Parameter. Irgendeine Hilfe?

Vielen Dank im Voraus!

+0

Ist vielleicht nicht der Server eine Abfrage-Parameter in der URL erwarten? wie http: // host /? query = xyz – Lucero

+0

Das ist, was ich nicht weiß, als das einzige Beispiel von Server-Entwicklern zur Verfügung gestellt wurde auf PHP (Code in der ersten Frage) –

+0

Siehe auch: http: //marcgravell.blogspot .com/2009/10/pass-data-einfach-lernen-von-jquery.html –

Antwort

9

würde ich WebClient.UploadValues verwenden:

 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); 
     } 
+0

Danke Mark, aber ich bekomme nur die gleiche Antwort wie mit meinem Code. Ich werde versuchen, Server-Entwickler erneut nach mehr Feedback zu fragen. –

+0

Nun, ich habe es lokal ausprobiert und funktioniert gut, also müssen einige Kompatibilitätsprobleme oder etwas ähnliches sein. –

+0

Würde dieser Code die Anfrage nicht zweimal posten? Sie rufen client.UploadValues ​​(URL, Felder) auf; zweimal. –

Verwandte Themen