将XML发布到WebAPI并返回结果
本文关键字:返回 结果 WebAPI XML | 更新日期: 2023-09-27 18:28:30
所以我已经努力完成这项工作一段时间了。让我解释一下要求。我必须编写一个WebAPI,它将接受XML,进行一些查找并返回响应。
我是新手,所以寻求了一些帮助。建议创建一个表示传入XML的自定义对象并使用该对象作为WebAPI公开的方法的参数。结果将是一个没有问题的类。
以下是完成的步骤。
创建了一个空的WebAPI项目。添加了一个表示传入XML的类。
传入XML:
<InComingStudent>
<StudentID>10</StudentID>
<Batch>56</Batch>
</InComingStudent>
类别:
public class InComingStudent
{
public string StudentID { get; set; }
public string Batch { get; set; }
}
此类型的返回对象:
public class StudentResult
{
public string StudentID { get; set; }
public string Batch { get; set; }
public string Score { get; set; }
}
添加了一个学生控制器与此方法:
public class StudentsController : ApiController
{
[HttpPost]
public StudentResult StudentStatus(InComingStudent inComingStudent)
{
ProcessStudent po = new ProcessStudent();
StudentResult studentResult = po.ProcessStudent();
return StudentResult;
}
}
运行服务。它在一个新浏览器中以404打开。没关系,因为我没有起始页。
编写控制台应用程序进行测试:
private static async void PostToStudentService()
{
using (var client = new HttpClient())
{
var studentToPost = new InComingStudent() { StudentID = "847", Batch="56"};
client.BaseAddress = new Uri("http://localhost:53247/");
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/xml"));
HttpResponseMessage response = await client.PostAsXmlAsync("api/Students/StudentStatus", studentToPost);
if (response.IsSuccessStatusCode)
{
// Print the response
}
}
}
MediaTypeWithQualityHeaderValue设置为application/xml。到目前为止还不错。当服务正在运行并且我运行控制台应用程序时,响应是404"未找到"。
我错过了什么?
非常感谢您的帮助。
谨致问候。
您尝试过[FromBody]
属性吗?
public class StudentsController : ApiController
{
[HttpPost]
public StudentResult StudentStatus([FromBody]InComingStudent inComingStudent)
{
ProcessStudent po = new ProcessStudent();
StudentResult studentResult = po.ProcessStudent();
return StudentResult;
}
}
作为一个建议,我会使用属性路由。
public class StudentsController : ApiController
{
[HttpPost, Route("api/stutents/studentsstatus")]
public StudentResult StudentStatus([FromBody]InComingStudent inComingStudent)
{
// ...
}
}