Asp.net web api 使Web API方法接受xml

Asp.net web api 使Web API方法接受xml,asp.net-web-api,Asp.net Web Api,我是新的网络API,所以如果这个问题听起来很琐碎或愚蠢,请仍然给出一个解决方案 我有一个要求,即我的web api的使用者希望发布xml 我创建了一个空的Web API控制器,并添加了如下方法: public class StudentController : ApiController { [HttpPost] public Student GetStudent(Student studentXml) { Student student = new St

我是新的网络API,所以如果这个问题听起来很琐碎或愚蠢,请仍然给出一个解决方案

我有一个要求,即我的web api的使用者希望发布xml

我创建了一个空的Web API控制器,并添加了如下方法:

public class StudentController : ApiController
{
    [HttpPost]
    public Student GetStudent(Student studentXml)
    {
        Student student = new Student() { Id = 502, Course = "Chemistry" };
        return student;
    }
}
param的类型为Student,它是一个与xml中的标记具有相同属性的类。 将发布的XML如下所示:

<StudentStatus>
    <AccountID>1231</AccountID>
    <Password>2132132</Password>
    <Batch/>
    <Sequence/>
    <Test>0</Test>
    <Date>09/25/2014 09:18:24</Date>
    <TestNumber>1972</TestNumber>
    <StatusCode>3</StatusCode>
    <ID>502</ID>
</StudentStatus>

1231
2132132
0
09/25/2014 09:18:24
1972
3.
502
假设该方法返回一个XML作为响应。 这对我来说很容易

接受:应用程序/xml

但是如何使该方法接受XML呢

非常感谢您的帮助


注意。

在控制器代码中尝试此操作…删除Get前缀,无需添加[HttpPost] 放一品脱啤酒,看看它是否击中那里

public void PostStudent(string studentXml)
    {
       //Write your logic here
    }
在发布数据的代码中尝试此操作

using (var client = new WebClient())
{
var data = "XML data" //Try HTML.Encode if it does not work               
var result = client.UploadString("http://localhost:52996/api/Student", "POST", data);
//Do something with result
}

使用[HttpPost]将xml作为字符串发布。将XML转换为dataset(ds.ReadXML),将HttpPost添加为属性并将XML作为字符串传递,浏览器会说“此请求的URL长度超过配置的maxUrlLength值”,请不要将其与URL一起传递。使用Jquery post方法传递它也可以在.netSo中使用WebRequest进行post,方法标记为HttpGet,而WebClient调用为post,这不起作用。将方法更改为使用HttpPost,并给出404。如果你愿意,我可以发布控制器代码。感谢您的时间。请尝试阅读此文章…添加了包含方法所需对象的代码。也请查看此链接。。。