Api 无法为空手道中的Odata URL指定圆括号
我正在尝试用空手道为ODataURL创建路径。 路径看起来像:Api 无法为空手道中的Odata URL指定圆括号,api,odata,karate,Api,Odata,Karate,我正在尝试用空手道为ODataURL创建路径。 路径看起来像:”/opu/odata/srt/ZQ_SRV/ZQ_BI_Q001(OPT_1='0013076036',OPT_To='0013076036')/Results' 似乎空手道无法读取圆括号()和“”等特殊字符。在圆括号开始之前,它在opu/odata/srt/ZQ_SRV/ZQ_BI_Q001之后剪切url。url(OPT_1='0013076036',OPT_To='0013076036')/Result的其余部分看起来像一个文本
”/opu/odata/srt/ZQ_SRV/ZQ_BI_Q001(OPT_1='0013076036',OPT_To='0013076036')/Results'
似乎空手道无法读取圆括号()和“”等特殊字符。在圆括号开始之前,它在opu/odata/srt/ZQ_SRV/ZQ_BI_Q001之后剪切url。url(OPT_1='0013076036',OPT_To='0013076036')/Result的其余部分看起来像一个文本
我曾尝试将%28用于(29%用于)和%27用于“但没有帮助”
另外,在邮递员中运行相同的url时,呼叫成功
运行测试url:
Background:
* url "https://httpbin.org/anything/opu/odata/srt/ZQ_SRV/ZQ_BI_Q001(OPT_1='0013076036',OPT_To='0013076036')/Results"
Scenario: test check
* method get
尝试完全手动构建url
,不要使用param
或path
:
* url "http://myhost/opu/odata/srt/ZQ_SRV/ZQ_BI_Q001(OPT_1='0013076036',OPT_To='0013076036')/Results"
如果仍然不起作用,则可能是您的服务器没有正确处理编码的URL-s,这可能是一个错误:
编辑:只需试着用这两行来证明空手道没有错/或者看看这个更简单的例子:
结果是:
Running com.intuit.karate.junit4.dev.TestRunner
23:11:06.404 [main] DEBUG com.intuit.karate - request:
1 > GET https://httpbin.org/anything/opu/odata/srt/ZQ_SRV/ZQ_BI_Q001(OPT_1='0013076036',OPT_To='0013076036')/Results
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: httpbin.org
1 > User-Agent: Apache-HttpClient/4.5.5 (Java/1.8.0_231)
23:11:08.154 [main] DEBUG com.intuit.karate - response time in milliseconds: 1745.46
1 < 200
1 < Access-Control-Allow-Credentials: true
1 < Access-Control-Allow-Origin: *
1 < Connection: keep-alive
1 < Content-Type: application/json
1 < Date: Wed, 22 Jan 2020 17:41:07 GMT
1 < Referrer-Policy: no-referrer-when-downgrade
1 < Server: nginx
1 < X-Content-Type-Options: nosniff
1 < X-Frame-Options: DENY
1 < X-XSS-Protection: 1; mode=block
{
"args": {},
"data": "",
"files": {},
"form": {},
"headers": {
"Accept-Encoding": "gzip,deflate",
"Host": "httpbin.org",
"User-Agent": "Apache-HttpClient/4.5.5 (Java/1.8.0_231)"
},
"json": null,
"method": "GET",
"origin": "49.206.14.183, 49.206.14.183",
"url": "https://httpbin.org/anything/opu/odata/srt/ZQ_SRV/ZQ_BI_Q001(OPT_1='0013076036',OPT_To='0013076036')/Results"
}
运行com.intuit.karate.junit4.dev.TestRunner
23:11:06.404[main]调试com.intuit.karate-请求:
1>获取https://httpbin.org/anything/opu/odata/srt/ZQ_SRV/ZQ_BI_Q001(选择1='0013076036',选择至='0013076036')/结果
1>接受编码:gzip,deflate
1>连接:保持活动状态
1>主机:httpbin.org
1>用户代理:Apache HttpClient/4.5.5(Java/1.8.0_231)
23:11:08.154[main]DEBUG com.intuit.karate-响应时间(毫秒):1745.46
1 < 200
1<访问控制允许凭据:true
1<访问控制允许原点:*
1<连接:保持活动
1<内容类型:应用程序/json
1<日期:2020年1月22日星期三17:41:07 GMT
1<推荐人政策:降级时无推荐人
1<服务器:nginx
1
解决问题的方法是将*方法get
替换为方法get时的
然后状态200
不,它没有帮助,url之前中断(.奇怪,因为同一个url调用在Postman中成功。似乎空手道无法正确读取url。有什么想法吗?@Y_Sh然后使用Postman:P-但说真的,请查看我对答案的编辑嘿@Peter Thomas,我已经运行了你的测试,它变为绿色,但控制台中的url看起来没有链接。在描述中添加了带有测试的屏幕截图。你的e使用*method get。我的代码看起来像method get然后status 200。当用我的代码调用您的测试url时,它抛出了错误。@Y\u Sh我没有任何要添加的内容。“unglued”是正常的,您的IDE可能检测不到url(因为它是一个设计糟糕的API IMO)-如果需要,请遵循以下说明:我可以确认这不是正确答案:)当method GET
和*method GET
之间没有区别,我不知道,但是*method GET确实解决了这个问题,这就是为什么我发布了答案我碰巧创造了空手道,所以我必须确保你的答案不会误导和浪费别人的时间。在没有看到你所有的代码的情况下,我们无法说出你的答案我解决了问题。这就是我要求遵循流程的原因:
Running com.intuit.karate.junit4.dev.TestRunner
23:11:06.404 [main] DEBUG com.intuit.karate - request:
1 > GET https://httpbin.org/anything/opu/odata/srt/ZQ_SRV/ZQ_BI_Q001(OPT_1='0013076036',OPT_To='0013076036')/Results
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: httpbin.org
1 > User-Agent: Apache-HttpClient/4.5.5 (Java/1.8.0_231)
23:11:08.154 [main] DEBUG com.intuit.karate - response time in milliseconds: 1745.46
1 < 200
1 < Access-Control-Allow-Credentials: true
1 < Access-Control-Allow-Origin: *
1 < Connection: keep-alive
1 < Content-Type: application/json
1 < Date: Wed, 22 Jan 2020 17:41:07 GMT
1 < Referrer-Policy: no-referrer-when-downgrade
1 < Server: nginx
1 < X-Content-Type-Options: nosniff
1 < X-Frame-Options: DENY
1 < X-XSS-Protection: 1; mode=block
{
"args": {},
"data": "",
"files": {},
"form": {},
"headers": {
"Accept-Encoding": "gzip,deflate",
"Host": "httpbin.org",
"User-Agent": "Apache-HttpClient/4.5.5 (Java/1.8.0_231)"
},
"json": null,
"method": "GET",
"origin": "49.206.14.183, 49.206.14.183",
"url": "https://httpbin.org/anything/opu/odata/srt/ZQ_SRV/ZQ_BI_Q001(OPT_1='0013076036',OPT_To='0013076036')/Results"
}