2010-06-30 149 views
2

我正在努力從我的休息客戶端發送數據到我的其餘服務器...REST,如何使用POST將數據從客戶端發送到服務器?

我已經創建了一個休息服務器發送xml到客戶端,並且工作正常。但是,從客戶端發送數據到服務器,我很難。

客戶:

_httpClientRead = new HttpClient("http://127.0.0.1:8000/"); 
var form = new HttpUrlEncodedForm(); 
form.Add("startDate", startDate); 
_httpClientRead.Post("test", form.CreateHttpContent()) 

服務器:

[OperationContract] 
[WebInvoke(Method = "POST", UriTemplate = "test")] 
Meeting CreateNewMeeting(string startDate); 

這個問題似乎是HttpUrlEncodedForm在客戶端上。如果我在發佈請求中發送空的HttpUrlEncodedForm對象,服務器將收到請求。添加HttpUrlEncodedForm屬性時,服務器永遠不會收到請求,並且沒有錯誤消息!

缺少什麼我在這裏? (服務器正在返回xml)

應該如何將發佈數據發送到服務器?

由於

回答

2

我認爲這是一個問題,您在客戶端使用HttpUrlEncodedForm,而在服務器端默認是Xml。爲了清楚說明,請將服務器端的請求格式設置爲RequestFormat = WebMessageFormat.Xml(將其設置爲WebIncoke屬性)。這樣做後,您可以配置您的客戶端發送有效的XML。另外請確保您使用正確的xml名稱空間。處理這種情況最簡單的方法是使用它將自動創建內容爲你的函數:

var httpContent = HttpContentExtensions.CreateDataContract(objectToSendToServer); 
// And then send it using post: 
_httpClient.Post("serviceUrl", httpContent); 

請注意,您還需要設置DefaultHeader上HttpClient的爲「application/XML」。

+0

感謝stiank81,解決了我的問題 – 2010-07-02 08:31:01

相關問題