使用camel http处理CachedOutputStream

jam*_*mes 4 apache-camel camel-http

你好~我正在使用camel http组件。我无法提取正文信息。

\n\n

这是我的代码

\n\n
.log(LoggingLevel.INFO, "ToUri ===> ${body}")\n.toD("${body}")\n.log(LoggingLevel.INFO, "Result ===> ${body}")\n.process(new Processor() {\n\n\n    public void process(Exchange exchange) throws Exception {\n\n        long startTime = System.currentTimeMillis();\n        Message inboundMessage = exchange.getIn();\n\n\n        Object body = exchange.getIn().getBody();\n        String msg = inboundMessage.getBody(String.class);\n\n        System.out.println("body:"+body);\n        System.out.println("getInBody msg:"+msg);\n        System.out.println("getInBody body:"+body.toString());\n    =======================================================================         \nbody : org.apache.camel.converter.stream.CachedOutputStream$WrappedInputStream@28936ba4\ngetInBody msg:\ngetInBody bodybodybody:org.apache.camel.converter.stream.CachedOutputStream$WrappedInputStream@28936ba4\n
Run Code Online (Sandbox Code Playgroud)\n\n

日志是好作品。像这样

\n\n
09:56:53.523 INFO  route1 - ToUri ===> https://translation.googleapis.com/language/translate/v2?key=tesetKey&source=en&target=ja&q=hi\n09:56:54.545 INFO  route1 - Result ===> {\n  "data": {\n    "translations": [\n      {\n        "translatedText": "\xe3\x81\x93\xe3\x82\x93\xe3\x81\xab\xe3\x81\xa1\xe3\x81\xaf"\n      }\n    ]\n  }\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

我想使用骆驼提取翻译文本。

\n\n

我如何处理 CachedOutputStream 这是什么?

\n\n

我搜索camel doc。但无法理解。请给我一个提示来解决我的问题。

\n\n

谢谢。

\n

Cla*_*sen 5

有关以下信息,请参阅流缓存CachedOutputStreamhttp://camel.apache.org/stream-caching.html

要从处理器获取字符串形式的消息正文,您只需执行以下操作

 String body = exchange.getIn().getBody(String.class);
Run Code Online (Sandbox Code Playgroud)

这将告诉 Camel 您希望将消息作为 aString并且它会自动将消息正文从 隐藏CachedOutputStreamString。然后您可以通过常规 J​​ava 代码获取您想要的文本。

另请注意,您可以使用 jsonpath 来处理 json 数据并获取信息,但其语法可能需要一点时间来学习:http://camel.apache.org/jsonpath