在 Mulesoft Anypoint Studio 中返回具有奇怪值的 BufferInputStream 的端点

Endpoints returning BufferInputStream with strange value in Mulesoft Anypoint Studio

我有3个独立的API,A,B,C。A和B是完全独立的,而C查询A和B一起编译数据。每个 API 在自己的项目中,运行 在自己的端口(分别为 8081、8082 和 8083)。

我能够成功地分别击中 A 和 B,并通过 C...有点。当 C 到达这些端点之一时,结果返回为 glassfish.grizzlly.utils.BufferInputStream.

我之前使用转换消息组件处理过这种 BufferInputStream 类型。然而,在这里这样做只会产生一个错误,说 payload.id 是错误的类型(它应该是一个整数)。当 运行 在调试模式下,我可以看到 A 有一个输出负载,其 id: Integer(它是自定义类型)。但是,回到 C 的流程后,有效负载现在是上述 BufferInputStream 类型,我无法直接访问 payload.id.

简而言之:如何从一个项目中检索另一个项目中的数据?

提前致谢!

更新:

我在 BufferInputStream 上使用了一个对象到字符串转换器来更好地查看值。它的格式似乎是 URL:

id=12345&name=nameValue&otherVal=%5B8499%5D...

此时我可以 #[payload.split('&')] 并获得我需要的大部分内容,但仍然存在如下问题:

summary=Words+with+plus+signs+in+the+middle

同样,我可以使用 split 之类的方法来解决这个问题,但这肯定不是我想要的。

更新 2:

我发现了以下警告:

[[test].api-httpListenerConfig.worker.01]
org.mule.module.http.internal.listener.HttpResponseBuilder: 
Payload is a Map which will be used to generate an url encoded http body but
Contenty-Type specified is application/java; charset=windows-1252 and not
application/x-www-form-urlencoded

虽然 Contenty-Type 打字错误很有趣,但我不完全确定如何处理该信息 ^^

已解决!在 A 和 B 中,我需要在返回值之前使用对象到字节数组转换器。这允许我在 C 中使用字节数组到对象转换器并取回原始值。