karate - 空手道:如何在没有 url 编码的情况下发送查询参数
问题描述
我目前正在使用空手道 dsl 编写自动化 REST API 测试,当我尝试一种破坏性测试时遇到了问题。发送无效的查询参数。
我遵循这篇文章空手道的建议:查询参数值正在被编码谁将只使用 url,但它似乎不适用于查询参数:
Scenario: Destructive testing - Illegal characters in parameters or payload
* def buildURL = 'http://127.0.0.1/identity/client?query={"idClient":{"$eq":9223372036854775807}}'
Given url buildURL
When method GET
Then status 400
错误:
java.net.URISyntaxException: Illegal character in query at index 39: http://127.0.0.1/identity/client?query={"idClient":{"$eq":9223372036854775807}}
我对 url 路径进行了相同类型的测试,它可以正常工作,但是对于查询参数,这种方式似乎不起作用。
明确地说,我的目标是发送查询参数或至少发送{
没有 url 编码的字符
有什么想法可以解决吗?
提前致谢
空手道版本:0.9.6
解决方案
首先,您正在按照规范尝试非法字符,因此您可能需要手动“URL 编码”该 URL - 根据您问题中的链接,您似乎已经意识到这一切。也许您的服务器不符合规范。
建议您尝试升级到 1.0 并参考这个未解决的问题:https ://github.com/intuit/karate/issues/1561
除此之外的任何事情都需要您提供帮助/贡献代码。
推荐阅读
- reactjs - 如何在 react-chartjs-2 中更改图形网格和轴颜色
- python - Bot在踢TELEPOT时一直显示相同的错误
- ios - 如何以 UIImageView 作为其子项使水平 UIStackView 包装高度内容?
- keras - Keras layers.pop() 没有删除图层
- java - 如何在 Java 中将 UTC 转换为 EST
- matlab - Matlab中的双倍和
- python - Discord.py 机器人,我可以“侧身”完成一项繁重的任务,这样我就不会滞后输入吗?
- cmd - 卸载 Conda 3.8 后 cmd 变得不可用
- python - 如何在 H2OAutoML 中设置 weights_column?
- wso2esb - 向 mqtt 发送消息时如何启用 SSL