2009-10-08 3 views
5

के साथ एक एचटीपीएस पोस्ट पर पैरामीटर कैसे भेजें, मैंने here से पूछा है कि https पोस्ट कैसे करें, और अब यह ठीक काम करता है।सी #

: समस्या अब कैसे एक पैरामीटर, नाम क्वेरी भेजने के लिए है, जो एक json स्ट्रिंग है { "कुंजी 1": "मान 1", "कुंजी 2": { "key21": "val21"}}

क्या मैं कर रहा हूँ और काम नहीं करता है:

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

लेकिन सर्वर हमेशा वहाँ कोई 'जिज्ञासा' पैरामीटर है कह जवाब। कोई मदद?

अग्रिम धन्यवाद!

+0

सर्वर शायद URL में क्वेरी पैरामीटर की उम्मीद नहीं करता है? जैसे http: // host /? query = xyz – Lucero

+0

यही वह नहीं है जो मुझे नहीं पता, क्योंकि सर्वर डेवलपर्स द्वारा प्रदान किया गया एकमात्र उदाहरण php (पहले प्रश्न में कोड) –

+0

पर भी देखें: http: //marcgravell.blogspot .com/200 9/10/पास-डेटा-बस-सीखने-से-jquery.html –

उत्तर

9

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

धन्यवाद मार्क, लेकिन मुझे बस मेरे कोड के समान जवाब मिल रहा है। मैं फिर से अधिक फ़ीड के लिए सर्वर डेवलपर्स से पूछने की कोशिश करूंगा। –

+0

ठीक है, मैंने इसे स्थानीय रूप से आजमाया है और बहुत अच्छा काम करता है, इसलिए कुछ संगतता समस्याएं या कुछ समान होना चाहिए। –

+0

क्या यह कोड दो बार अनुरोध पोस्ट नहीं करेगा? आप क्लाइंट को बुला रहे हैं। अपलोड करें वैल्यूज (यूआरएल, फ़ील्ड); दो बार। –