Web Api:通过POSTMAN发送XML请求总是给出null对象

时间:2017-08-15 09:30:48

标签: xml asp.net-web-api postman datacontract

我正在使用Postman扩展程序并尝试将 Xml post post 发送到我的网络API。

样本型号:

[DataContract(Namespace = "")]
public class Employee
{

        [DataMember]
        [Range(10000, 99999)]
        public int Id { get; set; }

        [DataMember]
        public string FirstName { get; set; }

        [DataMember]
        [Required]
        [MaxLength(20)]
        public string LastName { get; set; }
}

邮差要求: enter image description here

在执行请求时,我总是在我的控制器的 post method 中获得 null employee object

如果我发送 JSON 请求,那么它可以正常工作。

我也尝试在DataContract属性中提供命名空间,但它不起作用。

1 个答案:

答案 0 :(得分:0)

我遇到了和你一样的问题,但我按照以下方式设置了我的课程:

public class Employee
{
    public int Id { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
}

XML中的数据会自动映射到您的Employee类。

我的问题是,XML是区分大小写的。确保所有XML参数名称与您的类参数匹配。它只需要一个参数就会出错,整个请求将为null。检查请求对象下的调试日志树是否看到以下错误(您必须搜索它,但它在那里):

Incorrect Content-Type: application/xml;charset=UTF-8

如果您看到,那么有一个参数不正确。按参数发送请求参数,直到找到错误的参数。

至于从XML序列化到XML,确保startup.cs只有以下代码:

services.AddMvc().AddXmlSerializerFormatters();

在您的控制器中,将类顶部的注释设置为:

[Produces("application/XML")]

并在您的路线方法上将其设置为:

[Consumes("application/XML")]
可悲的是,我在这个问题上失去了一天半。这个链接很有用:

https://docs.microsoft.com/en-us/aspnet/web-api/overview/formats-and-model-binding

更多的灵魂摧毁是其他人也遇到了同样的问题。然而,他们已经解决了这个问题,但没有礼貌地告诉其他人。

提示:尝试使用SoapUI的免费版本,它还有一些真正有助于调试的功能。