空手道 DSL 框架是不是能够将 POST 请求作为 url 编码格式传递?

Posted

技术标签:

【中文标题】空手道 DSL 框架是不是能够将 POST 请求作为 url 编码格式传递?【英文标题】:Does Karate DSL Framework have the capability to pass a POST Request as a url encoded format?空手道 DSL 框架是否能够将 POST 请求作为 url 编码格式传递? 【发布时间】:2018-03-02 02:26:07 【问题描述】:

我的项目中的某些 API 只能通过 OAuth 2.0 使用编码格式访问。我可以使用 POSTMAN 手动提交 POST,因为它具有 x-www-form-urlencoded 功能来发送请求(附图片)。作为一种解决方法,我创建了一个 java 函数来将我的 json 主体转换为编码的 URI 并作为变量传递。但是,我在运行它时收到“http 调用 URL 失败”。我想知道空手道是否有自己的库来将 json 转换为编码的 URI。

场景:Json 到 POST 正文上的编码 URI

* def JavaDemo = Java.type('com.ge.health.gam.service.servicerequest.testsuite.CustomJavaClass')
* def encodedURI = JavaDemo.jsonToURI()
* print encodedURI

Given url 'http://location.ver02.geicenter.com/uaa/oauth/token'
And request encodedURI
When method post
Then status 200

com.intuit.karate.exception.KarateException:http 调用在 263 毫秒后失败,网址为:http://location.ver02.geicenter.com/uaa/oauth/token

【问题讨论】:

【参考方案1】:

根据 Peter Thomas 的建议,我发现以下内容可以通过 Oath 2.0 提交请求。就我而言,我还必须安装所需的证书才能收到有效的响应。您还必须考虑到这一点。

Given path 'uaa', 'oauth', 'token'
And form field key = 'value'
And form field key = 'value'
And form field key = 'value'
And form field key = 'value'
When method post
Then status 200 

【讨论】:

有一个可用的 beta 版本 0.6.0.2 可以修复 SSL 问题之一。所以你不需要证书,只需要“* configure ssl = true”就足够了。如果你能验证这对你有用,那就太好了。【参考方案2】:

是的。请参阅form field 的文档。 demos 中还有一个 OAuth 2 示例,请查找。

另见:https://***.com/a/58643689/143475

【讨论】:

以上是关于空手道 DSL 框架是不是能够将 POST 请求作为 url 编码格式传递?的主要内容,如果未能解决你的问题,请参考以下文章

空手道 DSL:获取连接超时错误

在空手道 DSL 中,如何在 java 参数调用中传递变量时转义单引号

空手道 DSL - 使用重试直到检查数组,直到所有项目中都存在特定的键值对[重复]

如何将黄瓜报告实用程序与空手道框架相结合?

空手道框架的 log4j 漏洞是不是有任何修复/更新?

如何在空手道框架中运行特定数量的特征文件?