Как перенести xml-файл из почтальона в web api, используя метод post, и вернуть его обратно? - PullRequest
0 голосов
/ 09 октября 2019

Здесь у меня есть тело запроса. Ps Content-Type: text / xml в заголовках

<?xml version="1.0" encoding="UTF-8"?>
<ROOT>
    <QRY Card="0000" Restaurant="0000" UnitNo="00">
        <INPBUF>
            <CHECK stationcode="0" restaurantcode="00" cashservername="00" generateddatetime="0000-00-0000:0000:00:00">
                <EXTINFO>
                    <INTERFACES>
                        <INTERFACE type="0" id="0" mode="0">
                            <HOLDERS>
                                <ITEM cardcode="0000000"/>
                            </HOLDERS>
                        </INTERFACE>
                    </INTERFACES>
                </EXTINFO>
            </CHECK>
        </INPBUF>
    </QRY>
</ROOT>

Это метод post, который необходимо изменить таким образом, чтобы он принимал запрос, отправленный по почте, и возвращал его тело обратно. Запрос отправлен в основной веб-API-интерфейс asp.net.

// POST api/<controller>
    [HttpPost]
    public void Post([FromBody]string value)
    {


    }

При большинстве попыток я получил следующий результат:

1) Какой тип параметров функции следует использовать? 2) Какой тип, функция должна возвращать? 3) Должен ли я создать свой собственный класс Xml, который будет использоваться кактип параметра функции?

1 Ответ

0 голосов
/ 09 октября 2019

Для 415 неподдерживаемых типов носителей необходимо проверить ниже:

services.AddMvc().AddXmlSerializerFormatters();

1) Какой тип параметров функции следует использовать?

А если выЧтобы получить XML по умолчанию, вам нужно изменить тип параметра string на XElement:

[HttpPost]
public void Post([FromBody]XElement request)
{
   //do your logic..
}

enter image description here

2) Какой тип, функция должна возвращать?

Это зависит только от вас. Вы можете вернуть соответствующие данные, что хотите получить из xml.

3)Должен ли я создать свой собственный класс Xml, который будет использоваться в качестве типа параметра функции?

Вы можете создать свой собственный класс и получить xml, как показано ниже:

1.UserКласс:

public class User
{  
    public int Id { get; set; }
    public string Name { get; set; }
}

2. Контроллер:

[HttpPost]
public IActionResult Post([FromBody]User user)
{
    var response = new User
    {
        Id = 3,
        Name = "Sandy"
    };
    return Ok(response);
}

3.Postman (если вы хотите получить ответ в формате XML, вы должны добавить заголовок Accept application/xml, так как по умолчаниюjson.):

<?xml version="1.0" encoding="UTF-8"?>
<User>
   <Id>1</Id>
   <Name>aa</Name>
</User>

4.Результат: enter image description here

Ссылка: http://www.devcode4.com/article/asp-net-core-xml-request-response

...