代码之家  ›  专栏  ›  技术社区  ›  Roberto Rodríguez

MULE 3.7.0 C.E.-BufferInputStream负载转换为字符串

  •  0
  • Roberto Rodríguez  · 技术社区  · 7 年前

    API层(基于RAML)接收入站请求并准备一些FlowVar,以便较低层知道如何继续。

    第二层也是服务定义的,所以ERRED的每个服务都有一个流。

    最后,第三层包含一个唯一的流,根据上层配置的FlowVar,第三层使用HTTP请求组件对所需的第三方服务执行调用。

    message.getPayloadAsString() 需要(或类似)。如果我们使用干净的吸气剂(如 message.getPayload()

    问题就在这里。接收到的每个有效负载似乎都是一个BufferInputStream,在执行 ,内部铸件似乎影响有效载荷。这通常不会成为问题,除非我们发现了一种情况:我们调用的一个服务返回一个PNG文件,所以 消息getPayloadAsString() 将其转换为字符串并打断图像。

    如果您有任何帮助、想法或建议,我们将不胜感激。

    1 回复  |  直到 7 年前
        1
  •  0
  •   Roberto Rodríguez    7 年前

    我们最终通过使用解决了这个问题 message.getPayloadAsBytes(); ,该返回值是一个全新的字节[]对象。这种方法既不会改变消息中的有效负载。通过使用字节数组,我们可以创建一个要在审计中写入的字符串对象,如下所示:

    byte[] auditByteArray[] = message.getPayloadAsBytes();
    String auditString = new String(auditByteArray);
    

    此外,我们尝试了一个测试,将该字节数组建立为消息中的新有效负载,浏览器可以正确管理JSON和PNG响应。