簡體   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