2010-01-12 78 views
1

我與ZenDesk集成的應用程序。他們有一個REST API。我需要在請求正文中發送POX。我正在使用WCF REST入門套件。如何創建HTTP POST請求的主體內容與WCF REST(入門套件)

如何以編程方式將xml添加到請求正文?

這裏是我的單元測試:

 [Test] 
     public void Can_create_user() 
     { 
      // Arrange 
      http = new HttpClient("http://myapp.zendesk.com/"); 
      http.TransportSettings.Credentials = new NetworkCredential 
               ("[email protected]", "passW0rd"); 
      http.DefaultHeaders.Accept.Add("application/xml"); 
      var form = new HttpUrlEncodedForm(); 
      var expectedStatusCode = 201; 

      var request = new XDocument(
       new XElement("user", 
          new XElement("email", "[email protected]"), 
          new XElement("name", "Joe User"), 
          new XElement("roles", "4"), 
          new XElement("restriction-id", "4"))); 

      form.Add("body", request.ToString()); 

      // Act 
      var response = http.Post("users.xml", form.CreateHttpContent()); 
      var content = response.Content.ReadAsString(); 

      // Assert 
      response.EnsureStatusIs(expectedStatusCode); 
+0

我最近寫上的一些博客文章你可以用HttpContent做的其他事情。 http://www.bizcoder.com/index.php/2009/12/09/http-content-instead-of-streams/ – 2010-01-12 15:06:23

+0

乾杯達雷爾。非常有用的博客文章。我已經Evernoted它:) – autonomatt 2010-01-12 15:18:12

回答

1

的解決方案是使用靜態方法Microsoft.Http.HttpContent.Create()

var response = http.Post("users.xml", HttpContent.Create(requestXML.ToString())); 
+0

而且,取代這個 http.DefaultHeaders.Accept.Add(「application/xml」); 與此 http.DefaultHeaders.Add(「Content-Type」,「application/xml; charset = utf-8」); – autonomatt 2010-01-12 15:15:22