使用 Karate 框架发送嵌套 JSON 作为验证 POST REST API 方法的请求时出现问题

Getting issue while sending nested JSON as request to validate the POST REST API method using Karate framework

请注意,我正在尝试发送以下请求并使用 url

在 POST 方法上验证响应

http://uat-ws.*.uk.***.ws/index.php/*/****/validatevoucher

像下面这样:我在这里使用空手道框架来自动化 REST API

Scenario: validate voucher

Given url 'http://-..uk../v3//******' 
And header Content-Type = 'application/json' 
And request {json request here}
When method post
Then status 200 



12:17:30.510 [main] DEBUG com.intuit.karate.StepDefs - response time in milliseconds: 579 12:17:30.528 [main] ERROR com.intuit.karate.StepDefs - FAILED, status code was 400, expected 200

[31mFailed scenarios:[0m [31mexamples/users/WSS.feature:3 [0m# Scenario: validate voucher

1 Scenarios ([31m1 failed[0m) 5 Steps ([31m1 failed[0m, [32m4 passed[0m) 0m3.516s

com.intuit.karate.KarateException: status code was 400, expected 200 at com.intuit.karate.StepDefs.handleFailure(StepDefs.java:516) at com.intuit.karate.StepDefs.status(StepDefs.java:447) at ✽.Then status 200(examples/users/WSS.feature:9)

从错误中可以很清楚地看出请求正在命中服务器,但服务器以 400 响应。空手道测试工作正常,但看起来服务器期待其他 JSON或内容类型。

我的建议是寻求可以查看服务器日志的人的帮助,找出服务器抛出 400 的原因。

编辑:重新阅读您的问题后,我猜您正试图形成一个嵌套 JSON。是的,您试图在脚本中使用的 JSON 是错误的。你能试试这个吗?由于您隐藏了很多实际请求,因此很难看出问题所在。请熟悉 JSON 以及如何创建嵌套 JSON,如下例所示。

And request
"""
{ 
  memberId: '******', 
  memberIpAddress: '******', 
  voucherData: { 
    blabla: { 
      voucherNo: '*****', 
      voucherValue: '***', 
      voucherIssueDate': '', 
      voucherExpiryDate: '******' 
    } 
  } 
}
"""