2013-03-20 36 views
0

我們繼承了使用Apache CXF編寫的Web服務。響應中的文本字段包含諸如單引號和「en」破折號(ascii 150)等字符。這些在響應中顯示爲正方形(使用SoapUI)或問號。更改CXF Web服務上的響應字符集

該文本來自設置爲WE8MSWIN1252字符集的Oracle數據庫。我想我需要將Web服務響應的編碼/字符集設置爲匹配(即Windows-1252),但找不到這樣做的地方。

我可以對文本進行XML編碼(例如,那些破折號顯示爲–)。但是,如果可以使用支持這些字符的字符集,那看起來更可取,那對嗎?

任何想法如何改變SOAP響應的編碼?

回答

1

請嘗試將下面的代碼添加到您的Apache CXF Web服務方法中。

import org.apache.cxf.message.Message; 
import org.apache.cxf.phase.PhaseInterceptorChain; 

Message message = PhaseInterceptorChain.getCurrentMessage(); 
message.put(Message.ENCODING, "Cp1252"); 
+0

你能不能給我一個想法,我會把這個代碼?它是否在具有javax.jws.WebService批註的類中進行?謝謝。 – SteveP 2013-03-20 17:41:18

+0

是的。放入Web服務方法 – Lan 2013-03-20 18:07:19

0

您可以設置編碼在返回的響應:

MyResponse response = new MyResponse(); 
//.... some code here 
return Response.ok(response).encoding("Cp1252").build();