首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >请求中的字符串格式问题列表

请求中的字符串格式问题列表
EN

Stack Overflow用户
提问于 2022-10-19 09:14:07
回答 1查看 37关注 0票数 0

我正在尝试使用J抄的Graphql HTTP请求来加载我的GraphQL。我正在JSR223预处理器中读取CSV文件以创建ArrayList。我正在将ArrayList加载到参数中。当我使用参数值时,由于格式化问题,我得到了错误。查询时不使用该参数。

代码语言:javascript
运行
复制
query MyQuery {
  batchGetData(input_data: ["aqwedasd","aqwedasq"]) {
    data {
      value1
      value2
      value3
    }
  }
}

没有参数的JMeter请求体。下面的请求工作正常,没有任何问题.

代码语言:javascript
运行
复制
POST https://example.com/graphql

POST data:
{"operationName":null,"query":"query MyQuery {\n  batchGetData(input_data: [\"aqwedasd\",\"aqwedasq\"]) {\n    data {\n      value1\n      value2\n      value3\n    }\n  }\n}"}

[no cookies]

现在,使用JSR223预处理器,我读取了一个CSV文件,并使用下面的脚本创建了一个ArrayList,并将其添加到listdata参数中。

代码语言:javascript
运行
复制
def rows = new File("values.csv").readLines()
Collections.shuffle(rows)
ArrayList<String> listdata = new ArrayList<String>()
listdata  = rows.subList(0, 5)
vars.putObject("listdata", listdata)

现在,在我的查询中,我使用了上面的listdata参数。

GraphQL查询:

代码语言:javascript
运行
复制
query MyQuery {
  batchGetData(input_data: ${listdata}) {
    data {
      value1
      value2
      value3
    }
  }
}

现在,当我运行线程组时,JMeter将查询转换为下面的请求体。这会失败,因为它没有与之前的请求相同的**。

代码语言:javascript
运行
复制
POST https://example.com/graphql

POST data:
{"operationName":null,"query":"query MyQuery {\n  batchGetData(input_data: ["aqwedasd","aqwedasq"]) {\n    data {\n      value1\n      value2\n      value3\n    }\n  }\n}"}

[no cookies]

对于上述请求,我将得到以下错误

代码语言:javascript
运行
复制
{
  "errors" : [ {
    "message" : "Invalid JSON payload in GraphQLAuth POST request.",
    "errorType" : "MalformedHttpRequestException"
  } ]
}

如果我做错了什么请告诉我。

EN

回答 1

Stack Overflow用户

发布于 2022-10-19 09:24:39

您需要从CSV文件中获得转义引号

你在发送:

代码语言:javascript
运行
复制
(input_data: ["aqwedasd","aqwedasq"])

而且它必须是

代码语言:javascript
运行
复制
(input_data: [\"aqwedasd\",\"aqwedasq\"])

我的期望是,与vars.putObject("listdata", listdata)不同,您需要做的事情如下:

代码语言:javascript
运行
复制
def json = new groovy.json.JsonBuilder(listdata).toString()
def escapedJson = org.apache.commons.text.StringEscapeUtils.escapeJson(json)
vars.put('listdata', escapedJson)

有关JMeter::Groovy用于什么?中Groovy脚本的更多信息

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74122770

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档