我是MULE ESB的新手,我有这个代码,我正在尝试使用http:request发送一个http请求,格式如下:
“http://www.host.com/api/commentThreads?key=val&part=val2& ...”
<file:inbound-endpoint connector-ref="fileConnector" path="C:/tmp/input"
doc:name="Reader File Configuration" responseTimeout="10000"
encoding="UTF-8" mimeType="text/plain"
pollingFrequency="20000">
<file:filename-wildcard-filter pattern="*.json"/>
</file:inbound-endpoint>
<json:json-to-object-transformer returnClass="java.util.Map" doc:name="JSON to Object"/>
<logger level="INFO" message="#[payload]" doc:name="Logger" />
<http:request config-ref="HTTP_Request_Configuration" path="/commentThreads" method="GET" port="443" doc:name="HTTP Request">
<http:request-builder>
<http:query-param paramName="key" value="#[message.payload.key]"/>
<http:query-param paramName="allThreadsRelatedToChannelId" value="#[message.payload.allThreadsRelatedToChannelId]"/>
<http:query-param paramName="part" value="#[message.payload.part]"/>
</http:request-builder>
</http:request>
但我有这个错误:
- 消息:发送错误但发送HTTP请求。消息有效内容的类型为:LinkedHashMap
- 代码:MULE_ERROR - 2
异常堆栈是:
- null(java.util.concurrent.TimeoutException)org.glassfish.grizzly.impl.SafeFutureImpl $ Sync:357(null)
- 发送HTTP请求时出错。消息有效内容的类型为:LinkedHashMap(org.mule.api.MessagingException)
醇>
org.mule.module.http.internal.request.DefaultHttpRequester:190 (http://www.mulesoft.org/docs/site/current3/apidocs/org/mule/api/MessagingException.html)
问题是如何使用地图制作具有该格式的http请求?
根据文件
Mule消息有效负载转换为字节数组并发送为 HTTP请求的正文。除了以外,始终执行此行为 在以下场景中:
Mule Message的Payload是键和值的映射
生成请求正文 内容类型:应用程序/ x窗体-urlencoded
每当消息有效负载是Map时,连接器就会自动生成 使用标头生成HTTP请求 内容类型:应用程序/ x-WWW的形式,进行了urlencoded。的关键和价值观 有效负载中的映射转换为表单参数键和 HTTP请求正文中的值。
我想地图会自动转换为请求。如果我错了,请纠正我
答案 0 :(得分:2)
必须在
之前进行转换<json: json-to-object-transformer returnClass = "java.util.Map" doc: name = "JSON to Object" />
通过添加
来纠正<byte-array-to-string-transformer doc: name = "Byte Array to String" />
答案 1 :(得分:0)
您实际获得的错误不是因为您的请求有问题(或者至少在该阶段没有失败),而是您的应用无法连接到您尝试发送的http服务器请求。您可以通过获得java.util.concurrent.TimeoutException
的例外来推断这一点。
要进行故障排除,请确认主机名和端口输入正确。