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

时间:2017-06-13 13:48:20

标签: mule mule-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上使用了一个Object to String转换器来更好地查看该值。它似乎采用URL格式:

ID = 12345&安培;名称= 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

我不完全确定如何处理这些信息,虽然“竞争型”拼写错误很有用^^

1 个答案:

答案 0 :(得分:0)

解决!在A和B中,我需要在返回值之前使用Object to Byte Array转换器。这允许我在C中使用Byte Array to Object转换器并返回原始值。