java - 转换 Mule HttpRequest 'GET' 响应

标签 java json http mule esb

我正在 Mule 中对我自己的 REST API 进行 httpRequest GET 调用,我希望能够将结果转换为 JSONArray。我调用的服务被配置为返回 JSON,但在 mule 中处理有效负载时,它被视为 BufferInputString。

这是代码:

<http:request config-ref="HTTP_Request_Configuration" path="muletest" method="GET" metadata:id="ccb5da53-5418-9753-8399-bb6f8a792f0a" doc:name="HTTP">
        <http:request-builder>
            <http:query-param paramName="firstname" value="#[payload.firstname]"/>
            <http:query-param paramName="lastname" value="#[payload.lastname]"/>
        </http:request-builder>
</http:request>
<set-variable variableName="existingAppointment" value="#[payload]" encoding="UTF-8" mimeType="text/json" metadata:id="40cc3baf-834e-4a82-86db-2779fb736565" doc:name="Get Result"/>
<logger message="GET RESULT: #[payload.get(0)]" level="INFO" metadata:id="5b634d23-af82-4160-8351-4360aa3b3edf" doc:name="Log Get Result" />

每当我尝试调用 #[payload.get(0)] 来记录我从调用中获得的结果 jsonArray 时,都会出现以下异常:

ERROR 2016-02-23 16:23:00,673 [[omdcrv3].omdcrv3Flow.stage1.02] org.mule.exception.CatchMessagingExceptionStrategy: 
<小时/>
Message               : Execution of the expression "payload.get(0)" failed. (org.mule.api.expression.ExpressionRuntimeException). Message payload is of type: BufferInputStream
Type                  : org.mule.api.MessagingException
Code                  : MULE_ERROR--2
Payload               : org.glassfish.grizzly.utils.BufferInputStream@5d838090
JavaDoc               : http://www.mulesoft.org/docs/site/current3/apidocs/org/mule/api/MessagingException.html
********************************************************************************
Exception stack is:
1. [Error: unable to resolve method: org.glassfish.grizzly.utils.BufferInputStream.get(java.lang.Integer) [arglength=1]]
[Near : {... payload.get(0) ....}]

这显然意味着它正在尝试处理 BufferInputStream 类型的对象,但我不明白我该如何将此类型转换为 JSON 类型...

我确信我做错了什么(我是骡子的新手),但不知道是什么......

**** 已编辑以显示我的解决方案 ****

Here is my SOLUTION

最佳答案

即使对象类型是 BufferInputStream,如果您将 #[payload] 放入记录器中(或在调试时使用 Evaluate Mule Expression,Ctrl + Shift + I),您将获得以下格式的 JSON字符串。

为了进一步评估,将#[json:]放入记录器中,您还将获得JSON。例如:

{
  "flights": [
    {
      "code": "ER38sd",
      "origin": "MUA",
      "destination": "SFO"
    },
    {
      "code": "ER39rk",
      "origin": "MUA",
      "destination": "SFO"
    }
  ]
}

然后将表达式修改为#[json:flights],你会得到一个ArrayList(String形式的JSON数组)

关于java - 转换 Mule HttpRequest 'GET' 响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35588600/

相关文章:

java - RSA加密-AES key 解密并存储在文件中

java - Google Go for Java 平台?

java - J2ME和iPhone哪个更好

ios - 按升序对数组进行排序并删除 objective-c 中的重复值

java - 判断是否来自Android App的HTTP请求?然后适当回应

http - 您可以将 Keep-Alive 与带有 HTTP 代理的 CONNECT 请求一起使用吗?

java - Eclipse,单击按钮时的新 Activity

java - 使用 RestTemplate 和 Jackson 反序列化对 Java 的 JSON 响应

ios - 在 Alamofire 中发送 JSONObject

php - 读取 HTTP 响应 header 中的 Set-Cookie 指令