调用 java 脚本代码返回 ':' 的 ASCII 编码,分隔返回对象的键和值
Call to java script code returning the ASCII encoding for ':' separating key and value of returned object
我使用空手道发出 api 请求,其中 api 请求参数之一采用过滤条件(这是一个 java 脚本对象)。
我正在使用文字符号创建一个 java 脚本对象,如下所示。此代码位于单独的 filter.js 文件中。
function() {
var params = {
val1:[],
val2:[]
};
return params;
}
现在我在空手道场景中调用上面的 .js 文件如下:
Scenario: Test
Given path 'filtertest/'
* param filter = call read('classpath:feature/common/filter/filter.js')
When method get
运行 以上,当我检查日志时,api 抛出错误请求错误。我查看了请求 url,在那里我可以看到我正在为对象键赋值的 js 文件中的“:”被替换为 %3A,我认为这是“:”的 ASCII 编码. (参数值如下)
?filter=%7B%22val1%22%3A%5B%5D%2C%22val2%22%3A%5B%5D
我想要的是来自 .js 调用的“:”,因为服务器端期望过滤器参数值作为键值对。
有什么办法可以实现吗?
如果您的服务器无法解码编码的 :
这是一个错误:https://www.w3schools.com/tags/ref_urlencode.asp
如果你真的需要这个 - 解决方法是使用 url
关键字并手动构建它,path
和 param
将 always编码。
Given url baseUrl + '/filtertest?filter=foo:bar'
我使用空手道发出 api 请求,其中 api 请求参数之一采用过滤条件(这是一个 java 脚本对象)。
我正在使用文字符号创建一个 java 脚本对象,如下所示。此代码位于单独的 filter.js 文件中。
function() {
var params = {
val1:[],
val2:[]
};
return params;
}
现在我在空手道场景中调用上面的 .js 文件如下:
Scenario: Test
Given path 'filtertest/'
* param filter = call read('classpath:feature/common/filter/filter.js')
When method get
运行 以上,当我检查日志时,api 抛出错误请求错误。我查看了请求 url,在那里我可以看到我正在为对象键赋值的 js 文件中的“:”被替换为 %3A,我认为这是“:”的 ASCII 编码. (参数值如下)
?filter=%7B%22val1%22%3A%5B%5D%2C%22val2%22%3A%5B%5D
我想要的是来自 .js 调用的“:”,因为服务器端期望过滤器参数值作为键值对。
有什么办法可以实现吗?
如果您的服务器无法解码编码的 :
这是一个错误:https://www.w3schools.com/tags/ref_urlencode.asp
如果你真的需要这个 - 解决方法是使用 url
关键字并手动构建它,path
和 param
将 always编码。
Given url baseUrl + '/filtertest?filter=foo:bar'