Karate 正确设置内容类型时如何解决错误415不支持的媒体类型
我有一个简单的POST请求,它需要一个json内容类型头和一个类似Karate 正确设置内容类型时如何解决错误415不支持的媒体类型,karate,Karate,我有一个简单的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"
}
当我在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”:“Unsupported Media Type”}。控制台输出显示在POST期间设置了正确的内容类型
即使我在脚本中专门设置了内容类型,415仍然返回,例如
And header Content-Type = 'application/json'
或
感谢您的帮助 尝试添加
*头Accept='application/json'
头。空手道和邮递员之间的一个区别是,邮递员试图变得聪明,自动添加一个接受标题,而空手道没有。我们进行了一些调试,发现空手道会自动将“charset=UTF-8”附加到内容类型标题。API不需要字符集
找到以下帖子并解决了问题:
发布此消息以帮助他人。很简单。试着在你的背景中使用这个
* def charset = null
我也试过了。只是再试一次。这并不能解决问题。有没有办法进一步调试此类问题?您能告诉服务器接收的内容类型吗?我建议在邮递员控制台中查找邮递员发出的完整请求/标题,并将其与空手道控制台中记录的请求进行比较。根据您的描述,可能是您的服务器因其他原因而崩溃。@Alex J感谢您的建议。他做到了这一点,并没有带来任何新的结果。还尝试了另一个rest工具Advanced rest Client进行比较。API调用在那里运行良好。顺便说一句,您的API很可能不符合标准。
* def charset = null