正确设置内容类型后,如何解决错误415不支持的媒体类型

时间:2018-10-18 21:36:36

标签: karate

我有一个简单的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' }

感谢您的帮助。

3 个答案:

答案 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标头,而空手道却没有。