2009-09-22 13 views
7

私がここでやろうとしているのは、XMLデータでRest webserivceへの投稿要求です。私はpostメソッドでRest Webserviceを呼び出し、C#でxmlデータを送信する方法

これは私が今持っているものですが、私は、私はWebClientクラスを使用

  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構築物を用いて行うことができます。

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

あなたは、実際に要求を実行するGetResponseを呼び出す必要があります:

req.GetResponse() 

HttpWebResponseから返されたことに注意してくださいこれも使い捨てですので、それも処分することを忘れないでください)。

6

私のXMLデータを渡す方法を確認していない:

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

WebClientをusingステートメントの先頭に定義することをお勧めします。このように、webClientという名前はusingブロックのローカルなので、webClientが処理された後にメソッドを呼び出す危険はありません。 – ctford

関連する問題