首页 文章

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

提问于
浏览
0

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

Sample Model:

[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; }
}

Postman Request:
enter image description here

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

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

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

1 回答

  • 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的免费版本,它还有一些真正有助于调试的功能 .

相关问题