我正在努力将数据从我的其余客户端发送到我的其余服务器......
我创建了一个向客户端发送 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 上。如果我在 post 请求中发送一个空的 HttpUrlEncodedForm 对象,服务器会收到该请求。添加HttpUrlEncodedForm属性时,服务器永远不会收到请求,并且没有错误消息!
我在这里缺少什么? (服务器正在返回 xml)
post数据应该如何发送到服务器?
谢谢
最佳答案
我认为这是一个问题,你在客户端使用HttpUrlEncodedForm,而服务器端默认是Xml。为了清楚起见,将服务器端的请求格式设置为 RequestFormat = WebMessageFormat.Xml
(在 WebIncoke 属性中设置)。执行此操作后,您可以配置客户端以发送有效的 xml。还要确保使用正确的 xml 命名空间。处理此问题的最简单方法是使用一个函数来自动为您创建内容:
var httpContent = HttpContentExtensions.CreateDataContract(objectToSendToServer);
// And then send it using post:
_httpClient.Post("serviceUrl", httpContent);
请注意,您还需要将 HttpClient 上的 DefaultHeader 设置为“application/xml”。
关于c# - 如何使用POST从客户端向服务器发送数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3146987/