(this是SWAPI的虚拟示例)我尝试根据文件中的内容设置请求主体,但失败了,因为JSON无效。但是当我手动设置请求主体时,相同内容的请求可以正常工作。在结果树视图中,我可以看到唯一的区别是手动请求是“编码”的,它有/n而不是可视的换行符。以下是失败的请求(主体来自文件):
下面是工作的请求(正文手动设置):
当从文件中检索查询字符串时,有没有人知道一种强制使用这种“编码”的方法?
ruarlubt1#
这看起来像是GraphQL HTTP请求采样器的限制或错误,您可能需要通过JMeter Bugzilla来引发它同时,您可以考虑使用__strReplace()函数手动将line breaks更改为\n,如下所示:
\n
${__strReplace(${__FileToString(${fileName},,)},\r\n,\\n,)}
应该能帮上忙。您可以使用JMeter Plugins Manager将__strReplace()函数作为自定义JMeter函数捆绑包的一部分安装更多信息:How to Use the Custom JMeter Functions Plugin
__strReplace()
idv4meu82#
我已经打开了一个bug for Apache,他们承认了这种行为,但它似乎不像他们会很快修复。我想出了一个解决方案,这是接近什么@Dmitri T建议,但没有使用任何插件我已经创建了一个JSR 223预处理器(语言:Groovy),它将替换可能破坏请求JSON的特殊字符。到目前为止,我在GraphQL中看到的可能破坏请求JSON的东西是新行和双引号。
def content = new File(vars.get('fileName')).text; vars.put('queryContent', content.replaceAll(/(\r\n|\r|\n)/, /\\n/).replaceAll(/"/, /\\"/))
2条答案
按热度按时间ruarlubt1#
这看起来像是GraphQL HTTP请求采样器的限制或错误,您可能需要通过JMeter Bugzilla来引发它
同时,您可以考虑使用__strReplace()函数手动将line breaks更改为
\n
,如下所示:应该能帮上忙。
您可以使用JMeter Plugins Manager将
__strReplace()
函数作为自定义JMeter函数捆绑包的一部分安装更多信息:How to Use the Custom JMeter Functions Plugin
idv4meu82#
我已经打开了一个bug for Apache,他们承认了这种行为,但它似乎不像他们会很快修复。
我想出了一个解决方案,这是接近什么@Dmitri T建议,但没有使用任何插件
我已经创建了一个JSR 223预处理器(语言:Groovy),它将替换可能破坏请求JSON的特殊字符。到目前为止,我在GraphQL中看到的可能破坏请求JSON的东西是新行和双引号。