0

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

Postman Body 选项卡在“KEY”下显示“SelectedCreditCard”,在“VALUE”下显示“34”

方法是 POST。

Postman Headers 选项卡在 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 带有无效卡警告)是在运行帖子时直接来自邮递员本身。我想知道是什么导致了这个差距。

4

1 回答 1

0

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

于 2020-02-12T16:15:25.597 回答