Публикация XML в WebAPI и возврат результата

1

Поэтому я уже давно пытаюсь получить эту работу. Позвольте мне объяснить это требование. Мне нужно написать 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 "Not Found".

Что мне не хватает?

Любая помощь приветствуется.

С уважением.

Теги:
asp.net-web-api

1 ответ

1
Лучший ответ

Вы пробовали [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)
    {
        // ...
   }
}
  • 0
    Прежде всего, спасибо за ваше время и помощь. Служба достигает точки останова, но InComingStudent имеет значение null. Никаких подсказок !!!
  • 0
    Что вы изменили в своем коде, чтобы достичь точки останова?
Показать ещё 9 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню