收到sun.net.www.protocol.http.httpurlconnection $ httpinputstream作为响应,同时调用无法处理的服务

时间:2015-12-16 04:59:08

标签: soap apache-camel cxf jbossfuse cxf-client

我正在使用Apache camel开发工作流应用程序

商业用例:

  1. 服务在消费者端点公开
  2. 处理请求消息
  3. 调用外部SOAP服务,获取响应
  4. 检查响应xml中的特定标记,然后仅调用另一个外部SOAP服务
  5. 将最终回复发送给客户
  6. 现在我陷入了第4步

    我的骆驼路线是

    <camelContext xmlns="http://camel.apache.org/schema/spring">
    
        <route streamCache="true">
          <from uri="cxf:bean:proxyEndpoint"/>
            <process ref="myProcessor"/>
                 <!-- processing request & logging -->
          <setBody>
                 <!-- set request as body required for calling external web service -->
          </setBody>
          <to uri="cxf:bean:panEndpoint"/>
          <!-- <to uri="file:C:/LOG" /> -->
          <!--  <process ref="myProcessor2"/> -->
          <log message="&gt;&gt;&gt; ${body}" loggingLevel="INFO"/> 
    
        </route>
      </camelContext>
    

    我可以调用外部服务,但是在<to uri="cxf:bean:panEndpoint"/>之后如果我尝试记录正文,那么在路由到文件的情况下我会得到相同的值。

    当我尝试路由到处理器并打印System.out.println(exchange.getIn().getBody());时 我收到sun.net.www.protocol.http.httpurlconnection$httpinputstream,我无法解析或处理

    当我尝试使用TCP-IP Monitor

    监视场景时,

    调用外部服务并收到正确的响应

    任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

告诉Camel你想要身体的类型,并使用它的类型转换器来实现(如果可能的话)。

因此,如果您希望身体为InputStream

exchange.getIn().getBody(InputStream.class)

如果你想要它作为字符串,那么做

exchange.getIn().getBody(String.class)

在这里阅读更多内容

在使用溪流时,请注意流缓存