我需要使用表格数据从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本身运行帖子。我想知道是什么原因造成了这种差距。
答案 0 :(得分:0)
找到解决方案:在curl中,标题名称应为“ Accept”(而不是“ Content-Type”)(无需指定Content-Type)