JMeter -使用__FileToString设置GraphQL请求正文时出错

lrl1mhuk  于 2022-11-09  发布在  其他
关注(0)|答案(2)|浏览(138)

(this是SWAPI的虚拟示例)
我尝试根据文件中的内容设置请求主体,但失败了,因为JSON无效。但是当我手动设置请求主体时,相同内容的请求可以正常工作。在结果树视图中,我可以看到唯一的区别是手动请求是“编码”的,它有/n而不是可视的换行符。
以下是失败的请求(主体来自文件):

下面是工作的请求(正文手动设置):

当从文件中检索查询字符串时,有没有人知道一种强制使用这种“编码”的方法?

ruarlubt

ruarlubt1#

这看起来像是GraphQL HTTP请求采样器的限制或错误,您可能需要通过JMeter Bugzilla来引发它
同时,您可以考虑使用__strReplace()函数手动将line breaks更改为\n,如下所示:

${__strReplace(${__FileToString(${fileName},,)},\r\n,\\n,)}

应该能帮上忙。
您可以使用JMeter Plugins Manager__strReplace()函数作为自定义JMeter函数捆绑包的一部分安装
更多信息:How to Use the Custom JMeter Functions Plugin

idv4meu8

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(/"/, /\\"/))

相关问题