我有一个在正文中包含graphQL查询的请求。
当我发布它时,它返回Content-Type→text / html;的响应。 charset = utf-8和其他一些常规标头。 txt / html响应通常包括两件事:
现在,我需要验证ColDefs始终出现在第一行中。第二行包含元数据。
如何确保响应的第一行始终包含colDefs,第二行包含元数据信息?
响应:
{ “ colDefs”:[{ “ entityAttributeId”:“ abc”, “ headerName”:“ xyz”, “ field”:“ 2”, “ entityPath”:“”, “ entityId”:“ mna” },{ “ entityAttributeId”:“ abc”, “ headerName”:“ abc”, “ field”:“ 3”, “ entityPath”:“ abc”, “ entityId”:“ abc” }
] } { “ 1”:“ 1000”, “ 2”:“ abc”, “ 3”:“ abc”, “ 4”:12 “ 5”:“ 6457.T”, “ 6”:“ 123”, “ 7”:“ abc” } { “ 1”:“ 123”, “ 2”:“ abc”, “ 3”:“ abc”, “ 4”:123, “ 5”:“ 123”, “ 6”:“”, “ 7”:“ abc” }
当我尝试打印空手道响应时,它不是在打印第二行(元数据)内容,而只是在打印colDefs。
空手道回应:
{ “ colDefs”:[{ “ entityAttributeId”:“ abc”, “ headerName”:“ xyz”, “ field”:“ 2”, “ entityPath”:“”, “ entityId”:“ mna” },{ “ entityAttributeId”:“ abc”, “ headerName”:“ abc”, “ field”:“ 3”, “ entityPath”:“ abc”, “ entityId”:“ abc” }
要复制的步骤:
URL:一些URL
标题:Content-Type ='application / json'
(在空手道功能中明确发送),
请求正文{
"query": "query($someid: [String]) {some(someid:$someid) {someid someNm someVariable {someVariable someVariableid otherVariable{ otherVariable1 { variable CUSIP issuer { someVariable2 }}}}}}",
"variables": {
"someid": ["1090"]
},
"includeMetadata": false
}
响应标题:连接→保持活动状态 内容长度→86488 内容类型→text / html; charset = utf-8
响应正文:
{
"colDefs": [{
"entityAttributeId": "abc",
"headerName": "xyz",
"field": "2",
"entityPath": "",
"entityId": "mna"
}, {
"entityAttributeId": "abc",
"headerName": "abc",
"field": "3",
"entityPath": "abc",
"entityId": "abc"
}
]
} {
"1": "1000",
"2": "abc",
"3": "abc",
"4": 12,
"5": "6457.T",
"6": "123",
"7": "abc"
} {
"1": "123",
"2": "abc",
"3": "abc",
"4": 123,
"5": "123",
"6": "",
"7": "abc"
}
空手道回应:
{ “ colDefs”:[{ “ entityAttributeId”:“ abc”, “ headerName”:“ xyz”, “ field”:“ 2”, “ entityPath”:“”, “ entityId”:“ mna” },{ “ entityAttributeId”:“ abc”, “ headerName”:“ abc”, “ field”:“ 3”, “ entityPath”:“ abc”, “ entityId”:“ abc” }
答案 0 :(得分:1)
很明显,您的响应不是有效的JSON格式,并且是某些专有格式的-希望空手道为您神奇地进行转换,这是您期望的:)
我建议您编写一些Java代码来进行自定义验证。这里发生的是Karate尽力而为-能够将一半的响应解析为JSON并放弃其余部分。您实际上应该对此表示赞赏:)
由于空手道还保留原始响应的副本(以字节为单位)(从0.9.0版开始),因此您可以这样做:
* string temp = responseBytes
现在,请使用一些Java代码或自定义字符串解析-对temp
(将是Java String
)进行任何要求的操作。我不得不说,这看起来像是一个设计不良的API。