2014-09-18 30 views
0

我正在執行系統集成。客戶端文檔指出將XML發佈到WebAPI方法始終爲空

應用程序/ x WWW的形式進行了urlencoded‘

<Message> 
    <Originator>ACME Solutions</Originator> 
    <Payload> 
    ...message xml content goes here... 
    </Payload> 
</Message> 

我使用的WebAPI 2和默認的控制器用於後動作「消息與HTTP CONTENT_TYPE頭設置爲發送’已

public void Post([FromBody]string value) 

每次的定義,我發佈這個消息,我的web服務接收到的值總是空

我已經試過肌酸g具有相同定義但類型始終爲null的類。

public void Post([FromBody]Message value) 

如果我改變的定義,以一個更通用的一個我可以從請求中提取內容的XML文檔,但那不是我想去的地方,因爲它使單元測試困難的方式。

public void Post(HttpRequestMessage request) 

任何人都可以建議我去哪裏錯了,爲什麼XML消息沒有映射到我的課。

+2

你張貼XML原進入人體或你編碼它(如您的標題建議)? – DavidG 2014-09-18 16:22:25

+0

謝謝。這很明顯,我錯過了。請發帖作爲答覆,我w.ill接受 – fluent 2014-09-18 18:37:37

回答

1

當您將內容類型設置爲application/x-www-form-urlencoded時,您還需要對正文進行編碼以匹配。所以,身體,而不是尋找這樣的:

<Message><Originator>ACME Solutions</Originator><Payload>message</Payload></Message> 

會是這個樣子:

value=%3CMessage%3E%3COriginator%3EACME+Solutions%3C%2FOriginator%3E%3CPayload%3Emessage%3C%2FPayload%3E%3C%2FMessage%3E 
+0

非常感謝。我在Chrome中使用一個休息客戶端來模擬帖子,只需使用編碼選項。 – fluent 2014-09-19 08:07:19