2015-06-04 5 views
8

लौट रहा है मेरी डब्ल्यूसीएफ (एज़ूर क्लाउड) सेवा में, मैं JSON का समर्थन करना चाहता हूं। मैं यह देखने के लिए कुछ परीक्षण विधियां बना रहा हूं कि सब कुछ काम करता है या नहीं। मैं काम करने के लिए कहता है प्राप्त कर सकते हैं, लेकिन जब मैं एक साधारण मापदंड के साथ एक पोस्ट कर रहा हूँ मैं हमेशा मिल जाएगा:डब्ल्यूसीएफ जेएसओएन पोस्ट अनुरोध, सिंगल स्ट्रिंग पैरामीटर बाध्यकारी नहीं है और 400

The remote server returned an error: (400) Bad Request. 

मैं एक पैरामीटर नहीं भेजते हैं, तो यह विधि पर अमल होगा, लेकिन साथ पाठ्यक्रम के पैरामीटर के रूप में एक शून्य मूल्य। मैंने JSON और WebMessageBodyStyle के विभिन्न प्रारूपों का प्रयास किया, लेकिन कोई भी काम नहीं कर रहा है।

यदि मैं पैरामीटर प्रकार को स्ट्रीम में बदलता हूं तो मुझे डेटा प्राप्त होता है, लेकिन मुझे इसे मैन्युअल रूप से deserialize करना है। यह जरूरी नहीं होना चाहिए?

इंटरफ़ेस:

 [OperationContract] 
     [WebInvoke(UriTemplate = "Test", 
      Method = "POST", 
      BodyStyle = WebMessageBodyStyle.WrappedRequest, 
      RequestFormat = WebMessageFormat.Json, 
      ResponseFormat = WebMessageFormat.Json)] 
     string Test(string data); 

Impl:

 public string Test(string data) 
     {   
      return "result is " + data; 
     } 

टेस्ट ग्राहक:

  WebClient client = new WebClient(); 
      client.Headers["Content-type"] = "application/json"; 
      client.Encoding = System.Text.Encoding.UTF8; 
      string jsonInput = "{'data':'testvalue'}"; 
      string postResponse = client.UploadString(postUrl, jsonInput); 
      Console.WriteLine("post response: " + postResponse); 

उत्तर

8

सुनहरा संयोजन WebMessageBodyStyle.WrappedRequest के साथ संयुक्त JSON कोड में दोहरे उद्धरण चिह्नों का उपयोग किया गया।

कार्य JSON:

string jsonInput = "{\"data\":\"testvalue\"}"; 

जब नंगे को WebMessageBodyStyle की स्थापना, निम्नलिखित JSON काम करता है:

string jsonInput = "\"testvalue\""; 
संबंधित मुद्दे