繁体   English   中英

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

[英]issue with Invalid UTF-8 start byte 0x8b (at char #2, byte #-1) Mule ESB

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

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

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

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

任何人都可以为我提供有关此问题的解决方案吗?

调用服务时出现以下异常。

异常堆栈是:

  1. 无效的 UTF-8 起始字节 0x8b(在字符 #2,字节 #-1)(java.io.CharConversionException)com.ctc.wstx.io.UTF8Reader:303(空)

  2. 无效的 UTF-8 起始字节 0x8b(在字符 #2,字节 #-1)(com.ctc.wstx.exc.WstxIOException)com.ctc.wstx.stax.WstxInputFactory:550(空)

  3. 无法解析流。 (java.lang.RuntimeException) org.apache.cxf.staxutils.StaxUtils:1262 (null)

  4. 无效的 UTF-8 起始字节 0x8b(在字符 #2,字节 #-1)。

如果您请求的第三方 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相同的内容字段中对其进行解码和替换。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM