2013-12-21 59 views
1

工作這是我的行動的Web API:模型綁定只用JSON而不是XML

public class EmployeesController : ApiController 
{ 
    public void Post(int id, Employee employee) //Break point here ... 
    { 

    } 
} 

當我發出以下POST請求,事情是完美的工作。

http://localhost:64946/api/employees/12345 

Host: localhost:64946 
Content-Type: application/json 
Content-Length: 194 

{"Id":12345,"FirstName":"John","LastName":"Human"} 

然而,當我改變內容類型是application/xml,僱員目的是

<Employee xmlns="http://schemas.datacontract.org/2004/07/RequestBinding.Models"> 
    <FirstName>John</FirstName> 
    <Id>12345</Id> 
    <LastName>Human</LastName> 
</Employee> 

我是否缺少任何東西?

UPDATE

我使用提琴手發出請求

感謝您的幫助

+0

網頁API。如果你不傳遞任何請求的Content-Type它以XML格式 –

+0

發送結果@VijaySingh它的使用招POST請求。當我發送'json'在身體,它的作品。但是,當我將內容類型更改爲application/xml,然後用正文中的xml替換json時,操作中的employee對象變爲null。 – Richard77

回答

2

對於這個XML

<Employee xmlns="http://schemas.datacontract.org/2004/07/RequestBinding.Models"> 
    <FirstName>John</FirstName> 
    <Id>12345</Id> 
    <LastName>Human</LastName> 
</Employee> 

要正確綁定,您Employee類的Web API項目必須是這樣的。名稱空間必須與請求中的內容匹配,類必須是公共的,屬性必須是公共的,屬性名稱必須與XML元素名稱匹配。在XML格式默認返回結果

namespace RequestBinding.Models 
{ 
    public class Employee 
    { 
     public int Id { get; set; } 
     // Other properties 
    } 
} 
+0

屬性匹配。但是,哪個名稱空間應該多大?這個'xmlns =「http://schemas.datacontract.org/2004/07/RequestBinding.Models」'? – Richard77

+0

模型的名稱空間必須與請求中的內容相匹配。由於您的XML具有'RequestBinding.Models','Employee'的名稱空間必須相同,如我的答案中所示。 – Badri

+0

確認!我遇到與json綁定工作和xml不同的確切問題。設置正確的名稱空間後,它已被修復。謝謝! json的另一點是與heh一起工作要簡單得多。 – TheLostBrain