web services - Send XML document in the HTTP body -


मेरे पास विधि के साथ एक वेब एपीआई नियंत्रक है

  सार्वजनिक IHttpActionResult प्राप्त करें (int id) { {XmlDocument xmlDoc = नया XmlDocument () का प्रयास करें; xmlDoc.LoadXml ( "test.xml"); वापस ठीक करें (xmlDoc.InnerXml); } पकड़ (अपवाद पूर्व) {वापसी InternalServerError (पूर्व); }}  

एक्सएमएल दस्तावेज़ HTTP संदेश बॉडी में स्ट्रिंग के रूप में दिखाता है

  "& lt;? Xml संस्करण = \" 1.0 \ "एन्कोडिंग = \" यूटीएफ -8 \ "? & Gt; टेस्टइनफ़ोन xmlns = \" http: // myschema \ "& gt; & lt; आईडी & gt; 171961 & lt; / CSOSAID & gt; ... & lt; / TestInfo & gt;"  

मैं इसे सरल XML में होना चाहता / चाहती हूं

  & lt;? Xml संस्करण = "1.0" एन्कोडिंग = "यूटीएफ -8"? & Gt; & lt ; टेस्टइनफ़ोन xmlns = "http: // myschema" & gt; & lt; आईडी & gt; 171961 & lt; / आईडी & gt; ... & lt; / TestInfo & gt;  

मैं यह कैसे कर सकता हूं? कई तरह की कोशिश करो, लेकिन नहीं मिल सकता है? धन्यवाद।

आप एक XMLSerializer का उपयोग करके स्ट्रिंग ऑब्जेक्ट क्रमबद्ध कर रहे हैं जो कि आप क्या चाहते हैं।

आप यह कर सकते हैं,

  सार्वजनिक IHttpActionResult जाओ (int आईडी) {try {XmlDocument xmlDoc = new XmlDocument ()); xmlDoc.LoadXml ( "test.xml"); नया प्रतिसाद संदेश वापसी (नया HttpResponseMessage) (सामग्री = नया स्ट्रिंग कंटेंट (xmlDoc.InnerXml, एन्कोडिंग.UTF8, "एप्लिकेशन / एक्सएमएल")}); } पकड़ (अपवाद पूर्व) {वापसी InternalServerError (पूर्व); }}  

या आप अपना स्वयं का IHttpActionResult सहायक वर्ग बना सकते हैं, जैसे कि,

  सार्वजनिक वर्ग XmlResult: IHttpActionResult {निजी रीडोनली XmlDocument _doc; सार्वजनिक XmlResult (XmlDocument दस्तावेज़) {_doc = doc; } सार्वजनिक कार्य & amp; एलटी; एचटीपीआरपीएसपॉर्मेस & gt; ExecuteAsync (रद्द करना टोकन रद्दकरण टोकन) {वापसी कार्य.फ़ॉर्मरसल्ट (नया एचटीटीपीपीएस संदेश () {सामग्री = नया स्ट्रिंग कॉन्टेंट (_doc.InnerXml, एन्कोडिंग.यूटीएफ 8, "एप्लिकेशन / एक्सएमएल")}); }}  

जो तब आपको करने की अनुमति देगा,

  सार्वजनिक IHttpActionResult प्राप्त करें (int id) {try {XmlDocument xmlDoc = new XmlDocument ()); xmlDoc.LoadXml ( "test.xml"); नया XmlResult (xmlDoc) लौटाएं; } पकड़ (अपवाद पूर्व) {वापसी InternalServerError (पूर्व); }}  

या आप एक्सईलेमेंट पर स्विच कर सकते हैं जो जादुई रूप से सही काम करेंगे,

  सार्वजनिक IHttpActionResult Get (int id) {try {XElement xElement = XElement.Load (..); वापसी ठीक है (एक्सईलेमेंट); } पकड़ (अपवाद पूर्व) {वापसी InternalServerError (पूर्व); 


Comments