我有一个简单的POST请求,该请求需要一个JSON Content-Type标头和一个类似
的正文{
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
运行此命令时,它将返回{“ code”:“ 415”,“ status”:“不支持的媒体类型”}。控制台输出显示在POST期间正在设置正确的内容类型。
即使我在脚本中专门设置了内容类型,仍然会返回415,例如
And header Content-Type = 'application/json'
OR
* configure headers = { 'Content-Type': 'application/json' }
感谢您的帮助。
答案 0 :(得分:1)
我们进行了一些调试,发现空手道自动将'charset = UTF-8'附加到Content-Type标头中。 API不希望使用字符集。
找到了以下帖子,并解决了该问题:
How can I send just 'application/json' as the content-type header with Karate?
发布此信息以帮助将来的其他人。
答案 1 :(得分:1)
很简单。尝试在您的背景中使用它。
* def charset = null
答案 2 :(得分:0)
尝试添加* header Accept = 'application/json'
标头。空手道与邮递员之间的区别是邮递员试图变得聪明并自动添加一个Accept
标头,而空手道却没有。