.Net Core не может получить XML-данные

#xml #http #asp.net-core #header #response

#xml #http #asp.net-core #заголовок #ответ

Вопрос:

Есть метод, который в настоящее время обрабатывает «application / x-www-form-urlencoded», как и ожидалось. Этот метод используется для обработки ответов от наших клиентов. Новый клиент отправляет свой ответ с типом содержимого «текст / xml».

Что бы я ни пробовал, единственное, что я получаю, это запрос.FormData заполняется только одним ключом, содержащим первую часть XML, и значением, содержащим остальную часть XML. Запрос.Тело всегда пустое.

    [DontWrapResult]
    public async Task<ActionResult> ResponseAsync(string order, string gateway)
    {
        var orderId = DecodeOrderId(order);
        var authToken = await GetAuthTokenAsync();

        var orderDto = await GetOrderDetailsAsync(orderId, authToken);

        CheckOrderCompleted(orderDto);
        await ClearBasketAsync(orderId, authToken);

        var requestBody = "";
        var contentType = Request.ContentType;
        var length = Request.ContentLength;

        using (var reader = new StreamReader(Request.Body, Encoding.UTF8))
        {
            requestBody = await reader.ReadToEndAsync();
        }
 

Предложения, которые я видел, — это изменить тип Accept на XML, но я понятия не имею, как это сделать. В примерах просто показано изменение типа в Postman, но я не понимаю, как это помогает моему коду.

Пожалуйста, обратите внимание, что мне все еще нужен этот метод, чтобы также принимать ‘application / x-www-form-urlencoded’. Если мне нужно создать новый метод специально для XML-ответа, это нормально, но я не уверен, как настроить его на конкретное принятие этого типа.

Комментарии:

1. Насколько я знаю, для получения и отправки данных из нашего веб-API в формате XML нам необходимо настроить соответствующие службы в классе Startup. Я предлагаю вам добавить services.AddControllers().AddXmlDataContractSerializerFormatters(); метод ConfigureServices.

2. @BrandoZhang да, это одно из первых предложений, которые я нашел, и оно ничего не изменило в запросе.

3. Вы имеете в виду, что хотите, чтобы этот метод api мог получать как xml, так и formdata в качестве типа запроса?

4. Правильно, если это невозможно, я не возражаю против создания 2 отдельных методов, но как вы тогда определяете, что что получает?

5. @BrandoZhang ^^^