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

Soap 调用无法处理的服务时收到sun.net.www.protocol.http.httpurlconnection$httpinputstream作为响应,soap,apache-camel,cxf,jbossfuse,cxf-client,Soap,Apache Camel,Cxf,Jbossfuse,Cxf Client,我正在用ApacheCamel开发工作流应用程序 业务用例: 服务在使用者端点公开 使用请求消息进行处理 调用外部SOAP服务,获取响应 检查响应xml中的特定标记,然后只调用另一个外部SOAP服务 将最终响应返回给客户端 现在我陷入了第四步 我的骆驼路线是 <camelContext xmlns="http://camel.apache.org/schema/spring"> <route streamCache="true"> <from

我正在用ApacheCamel开发工作流应用程序

业务用例:

  • 服务在使用者端点公开
  • 使用请求消息进行处理
  • 调用外部SOAP服务,获取响应
  • 检查响应xml中的特定标记,然后只调用另一个外部SOAP服务
  • 将最终响应返回给客户端
  • 现在我陷入了第四步

    我的骆驼路线是

    <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>
    
    
    
    我可以调用外部服务,但在
    之后,如果我尝试记录正文,我会得到相同的任意值,以防路由到文件

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

    当我试图使用TCP-IP监视器监视场景时,调用了外部服务并接收到正确的响应


    任何帮助都将不胜感激。

    告诉Camel您希望身体是什么类型的,它使用其类型转换器来实现这一点(如果可能的话)

    因此,如果希望主体作为
    InputStream
    do

    exchange.getIn().getBody(InputStream.class)
    
    如果你想让它成为字符串,那就做吧

    exchange.getIn().getBody(String.class)
    
    在这里阅读更多

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


    我在调试应用程序,所以我调试了System.out.println(exchange.getIn().getBody(String.class));但正如我前面所说,它给了我任意的值,如下图所示:@???{???{???;?N'??\fd☺l??J??!???▼?~|▼?"▲?▲?▬ez?MQ-?hw?Q?/?X^ |?=?>?8z?T?2/?U+??◄>??Y▲??L???“k???§>▼还有其他建议吗?