- 这是我在 WSO2 中的第一个 REST API,wso2 中的序列如下。
<? xml version = "1.0" encoding = "UTF-8" ?>
< api xmlns = "http://ws.apache.org/ns/synapse"
name = "createIssue"
context = "/rest"
hostname = "XXX"
port = "XXX" >
< resource methods = "POST"
inSequence = "createInSequence"
`enter code here`
outSequence = "createOutSequence" >
< faultSequence / >
< /resource>
</api >
<? xml version = "1.0"
encoding = "UTF-8" ?>
< sequence xmlns = "http://ws.apache.org/ns/synapse"
name = "createInSequence" >
< log level = "custom" >
< property name = "location"
expression = "json-eval($.fields)" / >
< /log>
</sequence >
-
我为调用 API 而发出的 curl 命令如下所示。
'curl -X POST -H "Content-Type:application/json" -d@"h:\createissue_own.json" "http://ip:port/rest/api/createissue"'
-
WSo2 esb 控制台显示以下错误
newJsonPayload.无法保存 JSON 有效负载。找到无效的输入流。
-
输入的 json 是一个有效的 json,我已经在下面验证并给出了。
{
"fields": {
"project": {
"id": "10301"
},
"summary": "Issue",
"description": "Description text",
"issuetype": {
"id": "10205"
},
"customfield_10600": {
"id": "10300"
},
"customfield_10602": {
"id": "10301"
},
"customfield_10603": "ID text",
"customfield_10608": {
"id": "10303"
},
"customfield_10609": " text",
"customfield_10610": " text",
"customfield_10611": " text",
"customfield_10612": "Postcode text"
}
}
请提出任何建议。我无法点击网址并记录输入 json。
将带有应用程序/json 内容类型标头的 XML 有效负载发送到 ESB 时,通常会出现此错误。我们在这里能做的最好的事情是启用线路日志并检查发送到 ESB 的 HTTP 标头和有效负载。要启用有线日志,请执行以下步骤,
- 关闭 ESB 实例
转到 $ESB_HOME/repository/conf 目录并找到log4j.属性文件 然后取消注释以下行
log4j.logger.org.apache.synapse.transport.http.wire=DEBUG
然后再次重新启动 ESB 实例并发送请求
监视 ESB 控制台中的线路日志,如下所示
符号">>"表示写入 ESB 的内容,符号"<<"表示写出 ESB 的内容。
我也怀疑你的 curl 命令,因此下面给出了一个示例 curl 命令。
curl -v -d @test.json -H "Content-Type:application/json" http://localhost:8280/rest/api/createissue