我有一个简单的 POST 请求,需要 json 内容类型标头和类似
{
oneNbr: "2016004444",
twoCode: "@@@",
threeNbr: "STD PACK",
sheetTitle: "010000",
codeType: "AF14"
}
当我在 Postman 中运行它时,它会按预期运行,返回 200 状态和预期的响应。
这是空手道中的相同脚本:
Scenario: Sample test
* def payload =
"""
{
oneNbr: "2016004444",
twoCode: "@@@",
threeNbr: "STD PACK",
sheetTitle: "010000",
codeType: "AF14"
}
"""
Given path '/my_end_point/endpoint'
And request payload
When method post
Then status 200
当我运行它时,它返回{"代码":"415","状态":"不支持的媒体类型"}。控制台输出显示开机自检期间设置了正确的内容类型。
即使我在脚本中专门设置了内容类型,仍然返回 415,例如
And header Content-Type = 'application/json'
或
* configure headers = { 'Content-Type': 'application/json' }
任何帮助,不胜感激。
我们做了一些调试,发现空手道会自动将"charset=UTF-8"附加到内容类型标头。API 不需要字符集。
找到了以下帖子并解决了问题:
如何使用空手道仅发送"应用程序/json"作为内容类型标头?
发布此内容以帮助将来的其他人。
很简单。尝试在后台使用它。
* def charset = null
尝试添加* header Accept = 'application/json'
标头。空手道和邮递员之间的一个区别是,邮递员试图变得聪明并自动添加一个Accept
标题 - 而空手道则没有。