2009-09-22 12 views
7

में एक्सएमएल डेटा भेजूं जो मैं यहां करने की कोशिश कर रहा हूं वह xml डेटा के साथ वेबसर्विसे को पुन: स्थापित करने के लिए पोस्ट अनुरोध कर रहा है।मैं एक पोस्ट विधि के साथ Rest Webserivce को कैसे कॉल करूं और सी #

इस

क्या मैं अभी है, लेकिन मुझे यकीन है कि मेरी एक्सएमएल डेटा भेजने का तरीका नहीं कर रहा हूँ

  XElement xml = new XElement("MatchedOptions", 
       from m in _matchedOptionsList 
       select new XElement("Listing", 
         new XElement("DomainID", _trafficCopInputs.DomainID), 
         new XElement("AdSource", _trafficCopInputs.AdSource), 
         new XElement("Campaign", _trafficCopInputs.Campaign), 
         new XElement("AdGroup", _trafficCopInputs.AdGroup), 
         new XElement("RedirectURL", m.RedirectPath), 
         new XElement("FunnelKeyword", m.FunnelKeyword))); 

      HttpWebRequest req = WebRequest.Create("http://something.com/") 
       as HttpWebRequest; 


      req.Method = "POST"; 
      req.ContentType = "text/xml"; 
      req.ContentLength = 0; 
      StreamWriter writer = new StreamWriter(req.GetRequestStream()); 
      writer.WriteLine(xml.ToString()); 

उत्तर

5

तुम क्या साथ मौलिक रूप से गलत कुछ भी नहीं है ' कर रहे हैं, लेकिन आपको अनुरोध स्ट्रीम लेखक को फ्लश/बंद करने की आवश्यकता है। यह आसानी से लेखक भी निपटाने के रूप में using निर्माण के साथ किया जा सकता है यह flushes:

req.GetResponse() 

(ध्यान दें कि HttpWebResponse से लौटे:

using (StreamWriter writer = new StreamWriter(req.GetRequestStream())) 
{ 
    writer.WriteLine(xml.ToString()); 
} 

फिर आप वास्तव में अनुरोध को निष्पादित करने GetResponse कॉल करने की आवश्यकता यह भी डिस्पोजेबल है, इसलिए इसे भी निपटाना न भूलें।)

6

मैं WebClient वर्ग का उपयोग करें:

WebClient webClient = new WebClient(); 
using (webClient) 
{ 
    requestInterceptor.OnRequest(webClient); 
    var enc = new ASCIIEncoding(); 
    return enc.GetString(webClient.UploadData(uri, enc.GetBytes(dataAsString))); 
} 
+8

मैं उपयोग कथन के शीर्ष पर वेब क्लाइंट को परिभाषित करने का सुझाव दूंगा। इस तरह वेब क्लाइंट नाम का उपयोग करने के लिए स्थानीय है और इसका निपटारा करने के बाद वेब क्लाइंट पर कॉलिंग विधियों का कोई जोखिम नहीं है। – ctford

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