2011-12-01 7 views
5

मेरे पास यह सरल वेब सेवा है, अभी यह देखने के लिए कि भाग संख्या A123456789 है और फिर यह मॉडल संख्या देता है। इसे तर्क द्वारा प्रतिस्थापित किया जाएगा जो पार्टनो को जांचने के लिए डेटाबेस में कनेक्ट हो जाएगा और फिर वास्तविक मॉडल नंबर लौटाएगा। लेकिन इस बिंदु पर मुझे बस कुछ डमी JSON डेटा वापस करने की आवश्यकता है। लेकिन जब मैं फ़िडलर का उपयोग करें और http://localhost:PORT/Scan/Model/A123456789 की वेब broswer में कॉल को देखो यह इसअस्थायी वेब सेवा एक्सएमएल लौट रही है JSON

<string xmlns="http://schemas.microsoft.com/2003/10/Serialization/">Model: CVS-1679</string> 

रिटर्न लेकिन मैं केवल तहत

"Model: CVS-1679" 

जब मैं एक ही यूआरआई की Fiddler में मिलता है टेक्स्टव्यू टैब

यह एक्सएमएल (ब्राउजर में ब्राउज़र और टेक्स्ट में) में क्यों लौटाया जा रहा है और जेएसओएन नहीं, जब मैंने अपना ResponseFormat JSON होने के लिए सेटअप किया है?

मेरे कोड:

[WebGet(UriTemplate = "Model/{partno}", ResponseFormat = WebMessageFormat.Json)] 
     public string Model(string partno) 
     { 
      if (partno == "A123456789") 
      { 
       string modelno = "CVS-1679"; 
       return "Model: " + modelno; 
      } 
      else 
      { 
       string modelno = "CVS-1601"; 
       return "Model: " + modelno; 
      } 
     } 
+1

सुनिश्चित करें कि आप आरईएसटी सेवा के लिए अनुरोध करते समय सामग्री-प्रकार को एप्लिकेशन/जेसन पर सेट करें – Rajesh

उत्तर

5

ASP.NET वेब सेवा वापसी XML/सोप संदेश प्रदर्शित करता है। यदि आप जेसन स्ट्रिंग को वापस करना चाहते हैं, तो आपको [ScriptService] विशेषता के साथ वेबसाइट सेवा को सजाने की आवश्यकता होगी। यह आईआईएस को सूचित करता है कि यह सेवा एएसपी.NET AJAX कॉल द्वारा उपयोग की जाएगी। ये विशेषता System.Web.Extensions का हिस्सा हैं।

आप स्क्रिप्ट विधि विधि के साथ वेबमाइट को सजाने के द्वारा वेब विधि प्रतिक्रिया प्रारूप को परिभाषित कर सकते हैं।

[ScriptMethod(ResponseFormat = ResponseFormat.Json)] 

हालांकि इन गुणों से webservice और webmethod को सजाने के बाद भी प्रतिक्रिया एक्सएमएल प्रारूप में हो सकती है। यह व्यवहार तब होता है जब अनुरोध करने वाला क्लाइंट अनुरोध शीर्षलेख सामग्री प्रकार को "एप्लिकेशन/जेसन" के रूप में सेट नहीं करता है।

वापसी से पहले webmethod से विधि कॉल JavaScriptSerializer

डिबगिंग WebService का उपयोग कर JSON स्ट्रिंग को क्रमानुसार फ़िडलर

यह Fiddler उपयोग करने के लिए वेब सेवा का परीक्षण करने के लिए काफी आसान है का उपयोग कर। निम्नलिखित चित्र एक वेबसाइट सेवा को कॉल करने का एक उदाहरण है जो एक जेसन स्ट्रिंग देता है।ध्यान दें कि अनुरोध सामग्री प्रकार एप्लिकेशन/जेसन पर सेट है। webserivce द्वारा अपेक्षित पैरामीटर अनुरोध निकाय अनुभाग में mentioed है। enter image description here

ध्यान दें कि अनुरोध सामग्री प्रकार एप्लिकेशन/जेसन पर सेट है।

4

यह Json में लौट जा रही है यदि आप डेटा आपको मिल के प्रारूप को देखो ...

key: value 

या अपने मामले में

string Model = "CVS-1679" 

जब आप इसे फिडलर में देखते हैं तो आप एक एमएस एंडपॉइंट से दूसरे में कच्चे क्रमिकरण परिवहन को देखते हैं। Serialization & .NET ढांचे में डी-सीरियलाइजेशन तत्व इसे तार में ले जाने का ख्याल रखते हैं, ताकि जब आप कॉलिंग एंड पर ऑब्जेक्ट को अपने .NET ऐप में वापस ले लें, तो आपको उस मान के साथ मॉडल कहा जाता है जिसे आप उम्मीद करते हैं ।

यदि आप एक पूरी कक्षा भेजने की कोशिश करते हैं तो आपको बहुत से नेस्टेड एक्सएमएल टैग दिखाई देंगे, लेकिन जब आप अपने कोड में ऑब्जेक्ट प्राप्त करेंगे, तो आपको ऑब्जेक्ट पदानुक्रम में प्रथम श्रेणी का नागरिक दिखाई देगा।

कारण यह आपके ब्राउज़र में दिखाई देता है क्योंकि, ब्राउज़र यह कैसे करने के लिए डी-serialise पता नहीं है, और तो बस डिफ़ॉल्ट रूप से पाठ

संबंधित मुद्दे