2009-09-22 11 views
7

Co staram się tutaj zrobić, to wysłać post do Rest webserivce z danymi XML.Jak wywołać Rest Webserivce za pomocą metody posta i wysłać dane XML w C#

to, co mam teraz, ale nie jestem pewien, jak przekazać moje dane XML

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

Odpowiedz

5

Nie ma nic fundamentalnie złego z tym, co” Robię to ponownie, ale musisz wyczyścić/zamknąć zapisujący strumień żądania. Można to łatwo zrobić z using konstruktem jak utylizacji pisarza również wypłukuje go:

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

Następnie należy zadzwonić GetResponse faktycznie realizuje wniosek:

req.GetResponse() 

(Zauważ, że HttpWebResponse wrócił z jest to również jednorazowe, więc nie zapomnij go również wyrzucić.)

6

I użyć klasy WebClient:

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

Sugerowałbym zdefiniowanie WebClienta u góry instrukcji using. W ten sposób nazwa webClient jest lokalna dla bloku use i nie ma ryzyka wywoływania metod na webClient po jego usunięciu. – ctford

Powiązane problemy