Получение тела запроса в asp web api

215
05 мая 2017, 15:11

Привет всем, столкнулся с проблемой следующего характера.

Есть метод в контроллере, который принимает некоторые данные в теле POST запроса, метод приведу ниже.

Как посмотреть какой именно запрос приходит на этот метод?

[HttpPost]
[Route("Status")]
public async Task<IHttpActionResult> 
PaymentStatusAsync([FromBody]PaymentStatusBindingModel xml)
{
    // Получить тело запроса нужно здесь (с заголовками и прочим)
    return Ok();
}

Спасибо всем кто отзовется

Answer 1

Ок, пусть модель запроса выглядит так:

public class RequestModel
{
   public string Method { get; set; }
   public string HttpVersion { get; set; }
   public Uri RequestUri { get; set; }
   public string Content { get; set; }
   public HttpRequestHeaders Headers { get; set; }
}

Для получения информации о запросе обычно используется свойство Request.

Тогда сам метод получения нужной информации может выглядеть примерно так:

public async Task<RequestModel> GetRequestInfoAsync(HttpRequestMessage request)
{        
    string body;
    using (Stream stream = await Request.Content.ReadAsStreamAsync())
    {
        stream.Seek(0, SeekOrigin.Begin);
        using (StreamReader sr = new StreamReader(stream))
        {
            body = await sr.ReadToEndAsync();
        }
    }
    return new RequestModel()
    {
        Content = body,
        Headers = request.Headers,
        HttpVersion = request.Version.ToString(),
        Method = request.Method.Method,
        RequestUri = request.RequestUri
    };
}

Теперь остаётся только вызвать метод GetRequestInfoAsync:

[HttpPost]
[Route("Status")]
public async Task<IHttpActionResult> PaymentStatusAsync([FromBody] PaymentStatusBindingModel xml)
{
    RequestModel data = await GetRequestInfoAsync(this.Request);
    return Ok();
}
READ ALSO
Обратиться к DataTable через SQL запрос

Обратиться к DataTable через SQL запрос

ПриветствуюЕсть dataset с несколькими таблицами

193
Как сделать вывод системы диалогов на canvas Unity

Как сделать вывод системы диалогов на canvas Unity

Всем привет, сразу скажу что я не очень хорош в геймдеве и у меня возник странный вопрос, можно ли изменить данный скрипт так, что бы он выводился...

230