发送HTTP请求时出错。消息有效内容的类型为:LinkedHashMap [MULE ESB]

时间:2015-05-14 21:19:52

标签: mule esb http-request

我是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
  •   
     

异常堆栈是:

     
      
  1. null(java.util.concurrent.TimeoutException)org.glassfish.grizzly.impl.SafeFutureImpl $ Sync:357(null)
  2.   
  3. 发送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
  4.   

问题是如何使用地图制作具有该格式的http请求?

  

根据文件

     

https://www.mulesoft.org/documentation/display/current/HTTP+Request+Connector#HTTPRequestConnector-HTTPRequestBody

     

Mule消息有效负载转换为字节数组并发送为   HTTP请求的正文。除了以外,始终执行此行为   在以下场景中:

     

Mule Message的Payload是键和值的映射

     

生成请求正文   内容类型:应用程序/ x窗体-urlencoded

     

每当消息有效负载是Map时,连接器就会自动生成   使用标头生成HTTP请求   内容类型:应用程序/ x-WWW的形式,进行了urlencoded。的关键和价值观   有效负载中的映射转换为表单参数键和   HTTP请求正文中的值。

     

我想地图会自动转换为请求。如果我错了,请纠正我

2 个答案:

答案 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的例外来推断这一点。

要进行故障排除,请确认主机名和端口输入正确。