使用Convertigo发送复杂json请求的最佳方法



我有一个复杂的 json 请求,我想将其发布到 api,但我在 Convertigo Studio 中找不到正确的方法来执行此操作。谁能指出我最好的方法?

这是我通过 curl 发送的请求,它给了我结果。这些结果将被前面用于显示数据。


curl -k -H "Accept: application/json" --compressed -XPOST https://myserverurl/api/search -d @- << EOF
{
"api-key":"somekey",
"usage":"someusage",
"criteria":{
"timestamp":{"from-to":{"date-pattern":"yyyy/MM/dd-HHmmss","from":"2019/07/28-000000","to":"2019/08/27-235959"}},
"timestamp-field":"timestamp",
"metric":"*",
"filter":{
"and":
[
{"eq":{"attribute":"type","value":"sometype"}},
{"simple-query":{"query":"_exists_:city"}},
{"neq":{"attribute":"status","value":"1"}}
]
}
},
"info":"someinfo",
"size":10000,
"mode":"last-hits",
"format":{"tabular":{"columns":["col1", "col2","col3"],
"last-hits-columns":["name"],"order-by":[{"name":"name","direction":"ASC"}]},
"timestamp":{"date-pattern":"dd/MM/yyyy HH:mm:ss"}},
"index":"someindex",
"last-hits-count":"1"
}
EOF

我现在想使用适当的连接器和事务将其转换为 Convertigo 方法,但到目前为止,我遇到了困难。任何帮助,不胜感激。

更新:所以我设法联系了 API,即通过实现一个HTTP_Connector然后是一个HTTP_Transaction来重现 curl 的第一部分。服务器正在以预期的方式应答。

现在我不能做的是发布 json 字符串。我尝试实现一个默认值为该 json 字符串的http_single_variable但它不起作用,我收到以下错误:

HTTP result {ContentType: application/json, Length: 277}
{"error":{"request":"http://localhost:8550/api/search","message":"Unexpected character ('H' (code 72)): expected a valid value (number, String, array, object, 'true', 'false' or 'null')n at [Source: java.io.InputStreamReader@6c195833; line: 1, column: 2]","target":"/search"}}

该错误似乎来自标头,该标头已定义为接受,应用程序/json。当我删除它时,我从服务器收到HTTP 500错误。

要在 Convertigo 请求中发布 JSON 正文,您必须在事务中添加变量">__body":

HTTP 单值变量

如果您的 API 返回 JSON 响应,则应使用JSON_HTTP_transaction而不是HTTP_Transaction事务。

将"HTTP谓词"属性事务设置为POST,将">HTTP 标头"属性设置为">内容类型、应用程序/json"。

__body变量的值通过如下Sequence_JS步骤按顺序设置:

var data = {
"param1": "value1",
"param2": "value2",
...
};

然后,使用jElement步骤将"数据"转换为 JSON 字符串源:

JSON.stringify(data)

在">表达式"属性中。

下一步是交易的调用。在"源"__body指向 jElement 文本。

以下是指向 Convertigo (7.5.7+( 示例的链接: 使用车身汽车

希望有帮助。

最新更新