首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >发出无效的UTF-8启动字节0x8b (在字符#2,字节#-1)

发出无效的UTF-8启动字节0x8b (在字符#2,字节#-1)
EN

Stack Overflow用户
提问于 2016-02-07 00:52:57
回答 2查看 13.6K关注 0票数 2

我已经创建了Mule ESB项目,它使用web服务使用者调用第三方web服务。

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

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

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

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

在调用服务时,我将得到以下异常。

异常堆栈是:

  1. 无效的UTF-8启动字节0x8b (在字符#2,字节#-1) (java.io.CharConversionException) com.ctc.wstx.io.UTF8Reader:303 (null)
  2. 无效的UTF-8启动字节0x8b (在字符#2,字节#-1) (com.ctc.wstx.exc.WstxIOException) com.ctc.wstx.stax.WstxInputFactory:550 (null)
  3. 无法解析流。(java.lang.RuntimeException) org.apache.cxf.staxutils.StaxUtils:1262 (null)
  4. 无效的UTF-8启动字节0x8b (在char #2,字节#-1)。
EN

回答 2

Stack Overflow用户

发布于 2016-09-08 10:09:44

如果您请求的第三方web服务提供gzip编码的响应,则可能会发生此问题。

代码语言:javascript
复制
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>...

在这种情况下,您需要使用某种类型的拦截器来解码响应。

票数 4
EN

Stack Overflow用户

发布于 2019-11-11 15:28:08

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

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

然后获取消息内容,解码并在与InputStream相同的内容字段中替换它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35248465

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档