2011-04-13 76 views
11

我正在開發第三方Web服務的客戶端。目的是我將xml文件發送到服務器。 我應該如何將xml文件附加到httpwebrequest?需要什麼contentType?更多建議?C#HttpWebRequest與XML結構化數據

我不能使用mtom或dime.ie,因爲我使用的是httpwebrequest。我無法使用WCF。

回答

28

這裏是(由需要使用request.ContentType =「應用/ xml」的方式)發送用的HttpWebRequest XML結構化數據的一個非常基本的方法:

HttpWebRequest request = (HttpWebRequest)WebRequest.Create(new Uri(myUrl)); 
request.Method = "POST"; 
request.ContentType = "application/xml"; 
request.Accept = "application/xml"; 

XElement redmineRequestXML = 
    new XElement("issue", 
    new XElement("project_id", 17) 
); 

byte[] bytes = Encoding.UTF8.GetBytes(redmineRequestXML.ToString()); 

request.ContentLength = bytes.Length; 

using (Stream putStream = request.GetRequestStream()) 
{ 
    putStream.Write(bytes, 0, bytes.Length); 
} 

// Log the response from Redmine RESTful service 
using (HttpWebResponse response = (HttpWebResponse)request.GetResponse()) 
using (StreamReader reader = new StreamReader(response.GetResponseStream())) 
{ 
    Logger.Info("Response from Redmine Issue Tracker: " + reader.ReadToEnd()); 
} 

我用這在之一我的項目(NBug)向我的Redmine問題跟蹤器提交問題報告,該問題跟蹤器通過Web請求(通過POST)接受XML結構化數據。如果你需要更多的例子,你可以在這裏找到幾個全功能的例子:http://nbug.codeplex.com/SourceControl/list/changesets(點擊右側'Latest Verion'標籤下的'Browse',然後導航到'NBug \ Submit \ Tracker \ Redmine.cs')

+0

HttpWebRequest是WebRequest的派生類。它是如何將WebRequest轉換爲HttpWebRequest的? – 2012-10-31 02:50:06

+0

+1 ...幫我解決了我的XML難題! – 2013-07-14 18:57:23