c# - 如何使用POST从客户端向服务器发送数据?

标签 c# wcf rest

我正在努力将数据从我的其余客户端发送到我的其余服务器......

我创建了一个向客户端发送 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/

相关文章:

multithreading - 将自定义主体和身份与 WCF 服务一起使用时出现问题

wcf - Wcf basicHttpBinding 是否支持 PerSession?

rest - 如何为实体添加附加名词来实现restful API

c# - 何时使用 var 何时使用强类型?

c# - Xamarin 从位图中获取错误的颜色

sql - 在 BizTalk 中的原子事务中发送/接收

java - 放心。是否可以从请求 json 中提取值?

rest - PUT POST 是幂等的 (REST)

c# - Bloomberg .Net API - 多种证券的响应数据

c# - 如何在 WPF 中启动时打开两个窗口?