簡體   English   中英

WSO2 ESB將Servlet響應作為二進制進行處理

[英]WSO2 ESB handling servlet response as binary

在我的inSecuence中,我有一個肥皂來阻止轉換,為了進行測試,我使用soap-ui作為客戶端,並使用eclipse和axis在本地開發了一個servlet。 到目前為止,一切正常。

但是...當我將http端點更改為真正的servlet時,我得到的響應為二進制

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

當我使用相同的網址在任何瀏覽器(例如Firefox)中調用servlet時,都會顯示“ NOK”

這意味着:

  • 使用本地模擬服務可以正常工作
  • 調用真實的servlet時,服務將以二進制形式返回數據
  • 像firefox這樣的瀏覽器在調用真實servlet時可以正確處理消息

我使用tcpmon來查看模擬響應和真實servlet響應之間的差異。 主要區別在於,實際的servlet使用傳輸編碼進行響應:分塊

¿我該怎么做才能正確對待反應?

在此處輸入圖片說明

您的servlet在響應中是否包含“ Content-Type”標頭?

正如您在所附的圖片中看到的那樣,缺少Content-Type標頭。 當響應中缺少Content-Type標頭時,ESB會將Content-Type假定為二進制,並將響應解析為Binary。

因此,要解決您的問題,請更新您的servlet以在響應中包含具有正確Content-Type的Content-Type標頭,例如:text / plain,然后再次嘗試調用。 它應該工作。

如果您無法更改servlet,則需要將ESB配置為在缺少Content Type標頭時使用默認的Content Type。 您可以在http://charithaka.blogspot.sg/2014/07/how-to-enforce-default-http-content.html中找到有關操作方法的詳細信息。

希望這可以幫助!

謝謝並恭祝安康,

Harshana

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM