我已经看了一些类似的职位,但都有不中我的情况适用于一些相关的细节。我有一个注册方法,现有的购物服务。它基于.NET Framework 4.6.1 Web API构建。我有许多工作场景中,其他的.NET Framework 4.6.1的Web API服务使用的HttpClient和HttpRequestMessage调用导购服务。我这样做与GET,PUT和POST方法和成功地通过使用数据到PUT和POST方法
request.Content = new ObjectContent<MemberAddress>(memberAddress, new System.Net.Http.Formatting.JsonMediaTypeFormatter());
我现在开发一个新的服务,这一个建立在ASP.NET的核心Web API。我试图打电话给在购物服务POST操作。我是从IHttpClientFactory.CreateClient得到我的HttpClient。该HttpRequestMessage成立,我认为,同样在我的其他通话服务。
var request = new HttpRequestMessage(HttpMethod.Post, updateShopperUrl);
request.Content = new ObjectContent<MemberRegistration>(memberRegistration, new System.Net.Http.Formatting.JsonMediaTypeFormatter(), "application/json");
对该服务的调用如下:
var httpClient = _clientFactory.CreateClient();
var response = await httpClient.SendAsync(request);
我可以在呼叫之前检查request.Content.Value和它所包含的对象/数据我期望。另一端的控制器操作代码如下:
[Route("{shopperId}/register")]
[Route("~/api/shopper/{shopperId}/register")]
[HttpPost]
public IHttpActionResult RegisterNewMember(string shopperId, [FromBody] MemberRegistration memberRegistration)
{
但是memberRegistration参数始终为null。在[FromBody]属性是最近才加入,试图解决这个问题,但它并没有帮助。无论如何,FromBody应该是复杂对象参数的默认行为。我可以张贴到与邮差端点和memberRegistration数据来通过。
要么我只是缺少明显的东西或也许有一些不同的方程的ASP.NET核心主叫侧发生。
答案 0 :(得分:1)
您似乎正在尝试发布JSON数据
尝试稍微改变一下方法,看看是否有效果。
var json = JsonConvert.SerializeObject(memberRegistration);
var content = new StringContent(json, Encoding.UTF8,"application/json");
var httpClient = _clientFactory.CreateClient();
var response = await httpClient.PostAsync(updateShopperUrl, content);
以上内容将对象手动序列化为JSON并将其发布到Web API。
与ObjectContent
一起使用的格式化程序可能有问题