Получение сообщения запроса с типом содержимого x-www-form-urlencoded в форме JSON с использованием C # для веб-хуков - PullRequest
0 голосов
/ 28 сентября 2018

У меня проблема с получением сообщения запроса. Я получаю необходимые данные с типом содержимого x-www-form-urlencoded, но в форме JSON (см. Изображение).Я использую Ngrok для имитации передачи данных на сервер.
См. Изображение здесь для формы, которую я получаю image

Проблема в том, что я всегда получаю значение NULL.

Я уже создал класс, который должен получать данные (я редактировал этот, прежде чем использовать его для части Entry):

public class FormData
{
    public string @object { get; set; }
    public Entry[] entry { get; set; }
    public string resource_url { get; set; }
}

public class Entry
{
    public string uuid { get; set; }
    public string[] changed_fields { get; set; }
    public string time { get; set; }
}

Мой [HttpPost] в моем контроллере, который я уже использовал:

  • с использованием класса formData и его возвратом, добавление ToString ()
  • с использованием JObject, даже если это форма (я пытаюсь получить этот формат JSON)
  • используя [FromBody], [FromQuery] (но я получаю неподдерживаемый тип мультимедиа) я использовал FromForm, но все еще получаю значение NULL
  • Попытался десериализовать его
  • Попытался использовать "объект" для поддержки всехклассы.Все еще Null.
  • Использование общедоступного HttpResponseMessage
  • Попытка с использованием расширения ApiController.

Все еще получаю значения NULL для них.

Теперь я используюэто просто для возврата ответа 200

public string Post(FormData deviceData)
{
    string please = deviceData.ToString();
    return please;
}

Если вы не видите картинку выше, вот запрос, который я получаю:

POST /api/values HTTP/1.1
Host: localhost:50754
User-Agent: ServiceM8-Platform/1.0
Content-Length: 233
Accept: */*
Content-Type: application/x-www-form-urlencoded
X-Forwarded-For: 35.176.170.33
X-Original-Host: 1fbbf508.ngrok.io

{"object":"JOB","entry":[{"uuid":"d4798ca6-5022-4527-b4ac-b6c7e822490b","changed_fields":["status"],"time":"2018-09-28 09:43:32"}],"resource_url":"https:\/\/api.servicem8.com\/api_1.0\/JOB\/d4798ca6-5022-4527-b4ac-b6c7e822490b.json"}

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

1 Ответ

0 голосов
/ 05 октября 2018

Проблема, как вы знаете, в том, что Content-Type - application/x-www-form-urlencoded, но в теле вы публикуете json.К сожалению, просто установить Content-Type запроса недостаточно, потому что ожидаемый формат x-www-form-urlencoded - Variable1=value&Variable2=anotherValue и так далее.Вот слегка опубликованный и довольно интересный ответ по x-www-form-urlencoded

В вашем конкретном случае вам нужно будет выполнить какое-то преобразование из json в строку с кодировкой URL

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...