邮递员生成的cUrl和Swift代码的状态为415,但是从邮递员本身运行时,我得到400(这是正确的)

时间:2020-02-12 15:42:47

标签: ios asp.net-mvc curl postman x-www-form-urlencoded

我需要使用表格数据从Swift iOS应用发布单个键值对。 后端开发人员提供的Postman示例起作用:

“邮递员正文”选项卡在“密钥”下显示“ SelectedCreditCard”,在“值”下显示“ 34”

方法是POST。

“邮递员标头”标签在KEY下显示“ Content-Type”,在VALUE下显示“ application / x-www-form-urlencoded”,以及其他授权令牌标头。

从Postman运行时,我的状态为400,其JSON正文包含“无效的信用卡”警告。这是预期的结果。

在Swift中实现此功能时,我收到415(不支持媒体)。我将Postman生成的curl代码粘贴到Mac命令行中,只是看它的外观,而令我惊讶的是,我得到了与iOS App中相同的结果。

卷曲代码:

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"}% 

我还尝试了Postman提供的生成的Objective C代码和生成的Swift代码,在所有情况下,结果均为415。唯一得到正确结果(400带有无效卡片警告)的情况是:直接从Postman本身运行帖子。我想知道是什么原因造成了这种差距。

1 个答案:

答案 0 :(得分:0)

找到解决方案:在curl中,标题名称应为“ Accept”(而不是“ Content-Type”)(无需指定Content-Type)