Mule ESB的UTF-8起始字节0x8b(位于字符2,字节-1)无效的问题

Mule ESB的UTF-8起始字节0x8b(位于字符2,字节-1)无效的问题,utf-8,mule,mule-studio,mule-component,Utf 8,Mule,Mule Studio,Mule Component,我创建了Mule ESB项目,该项目使用web服务使用者调用第三方web服务 使用属性传递自定义安全标头信息 使用转换xslt将输入消息从源转换为目标 输出中没有转换。输出中只添加了DOM到XML节点 有谁能为我提供这个问题的解决方案吗 我在调用服务时遇到以下异常 异常堆栈是: 字符2处的UTF-8起始字节0x8b无效,字节-1 java.io.CharConversionException com.ctc.wstx.io.UTF8Reader:303 null 字符2处的UTF-8起始字节0x

我创建了Mule ESB项目,该项目使用web服务使用者调用第三方web服务

使用属性传递自定义安全标头信息

使用转换xslt将输入消息从源转换为目标

输出中没有转换。输出中只添加了DOM到XML节点

有谁能为我提供这个问题的解决方案吗

我在调用服务时遇到以下异常

异常堆栈是:

字符2处的UTF-8起始字节0x8b无效,字节-1 java.io.CharConversionException com.ctc.wstx.io.UTF8Reader:303 null

字符2处的UTF-8起始字节0x8b无效,字节-1 com.ctc.wstx.exc.WstxIOException com.ctc.wstx.stax.WstxInputFactory:550 null

无法分析流。java.lang.RuntimeException org.apache.cxf.staxutils.staxutils:1262 null

字符2的字节-1处的UTF-8起始字节0x8b无效


如果您请求的第三方web服务提供gzip编码的响应,即

HTTP/1.1 200 OK
Content-Type: text/xml;charset="utf-8"
Content-Encoding: gzip
Content-Length: 324

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>...

在这种情况下,您需要使用某种拦截器对响应进行解码。

要解决这个问题,您需要拦截响应消息并对其进行解码,因为它是以gzip编码格式或其他压缩方式传入的

使用CXF,可以通过扩展AbstractPhaseInterceptor类并重写handleMessage方法来创建自定义拦截器

然后获取消息内容,解码并将其替换到与InputStream相同的内容字段中