![](/img/trans.png)
[英]UnicodeDecodeError: 'utf-8' codec can't decode byte 0x8b in position 1: invalid start byte
[英]issue with Invalid UTF-8 start byte 0x8b (at char #2, byte #-1) Mule ESB
我創建了 Mule ESB 項目,該項目使用 Web 服務使用者調用第三方 Web 服務。
使用屬性傳遞自定義安全標頭信息
使用轉換 xslt 將輸入消息從源轉換為目標。
輸出沒有轉換。 輸出中僅添加了 DOM 到 XML 節點
任何人都可以為我提供有關此問題的解決方案嗎?
調用服務時出現以下異常。
異常堆棧是:
無效的 UTF-8 起始字節 0x8b(在字符 #2,字節 #-1)(java.io.CharConversionException)com.ctc.wstx.io.UTF8Reader:303(空)
無效的 UTF-8 起始字節 0x8b(在字符 #2,字節 #-1)(com.ctc.wstx.exc.WstxIOException)com.ctc.wstx.stax.WstxInputFactory:550(空)
無法解析流。 (java.lang.RuntimeException) org.apache.cxf.staxutils.StaxUtils:1262 (null)
無效的 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.