Сгенерированные почтальоном коды cUrl и Swift приводят к статусу 415, но при запуске того же самого из почтальона я получаю 400 (что правильно) - PullRequest
0 голосов
/ 12 февраля 2020

Мне нужно опубликовать одну пару ключ-значение из приложения Swift iOS с использованием данных формы. Пример «Почтальон», предоставленный внутренним разработчиком, работает:

На вкладке «Тело почтальона» отображается «SelectedCreditCard» в «KEY» и «34» в «VALUE»

Метод POST .

На вкладке Заголовки почтальона отображается «Тип контента» в разделе KEY и «application / x- www-form-urlencoded» в поле ЗНАЧЕНИЕ, а также дополнительный заголовок токена авторизации.

При запуске из Почтальона I получить статус 400 с телом JSON, содержащим предупреждение «Недействительная кредитная карта». Это ожидаемый результат.

При реализации этого в Swift я получил 415 (носитель не поддерживается). Я вставил код curl, сгенерированный Postman, в командную строку Ma c, просто чтобы посмотреть, как он выглядит, и, к своему удивлению, получил тот же результат, что и в iOS App.

Код curl :

curl --location --request POST 'https://stg.xxx.com/api/xxx/SavePaymentInfo' \
--header 'Authorization: Bearer xxxxxxxxxx' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--form 'SelectedCreditCard=34'

Результат скручивания:

    {"$type":"Microsoft.AspNetCore.Mvc.ProblemDetails,
     Microsoft.AspNetCore.Mvc.Core",
    "type":"https://tools.ietf.org/html/rfc7231#section-6.5.13",
"title":"Unsupported Media Type",
    "status":415,
    "traceId":"0HLTFOL7EGBUA:00000007"}% 

Я также попробовал сгенерированный код Objective C, предоставленный Почтальоном, и сгенерированный код Swift, и во всех случаях результат 415. Единственный случай, когда я получаю правильный результат (400 с предупреждением о недействительной карточке), - это когда я запускаю почту непосредственно из самого Почтальона. Интересно, что вызывает этот разрыв.

1 Ответ

0 голосов
/ 12 февраля 2020

Нашел решение: в curl вместо «Content-Type» имя заголовка должно быть «Accept» (указывать Content-Type не нужно)

...