Независимо от того, какое значение я ввожу в качестве «Content-Type» моего запроса, исходящий запрос, который я отправляю, кажется, заменяет его на «application / x- www-form-urlencoded». Приложение, которое я пытаюсь запустить, ожидает "application / json". Мой код, в основном, ниже.
{-# LANGUAGE OverloadedStrings #-}
import Network.Wreq
...
submissionResources = ["https://widgets.example.com/v2/widgets/request"]
sendWidgetToEndpoint submissionResources workingToken key widgetArray = do
let opts = defaults & header "Content-Type" .~ ["application/json"]
& header "apikey" .~ [key]
& header "Authorization" .~ [workingToken]
endPointURL = head submissionResources
widgetId = widgetArray !! 0
numberOfWidgets = widgetArray !! 1
widgetText = widgetArray !! 2
submissionResult <- postWith opts endPointURL [ "widgetId" := widgetId
, "numWidgets" := numberOfWidgets
, "widgetText" := widgetText
]
return submissionResult
Моя проблема в том, что я продолжаю получать Status {statusCode = 415, statusMessage = "Unsupported Media Type"}
с этой конечной точки, и я уверен, что это потому, что отправляемый мной запрос, кажется, переопределяет «Content-Type» в моем заголовке. Я пытался использовать «application / json» и «text / plain», но ответ, который я получаю, всегда указывает мне, что все отправленные мной заголовки выглядят, как и ожидалось, за исключением Content-Type, который неизменно становится «application / x». - www-form-urlencoded ".
Как я могу убедиться, что wreq хранит 'Content-Type: application / json' в заголовке моих запросов?
EDIT: я определяю, какие заголовки были в мой первоначальный запрос, который мне сообщает сервер API в своем ответе.