2013-01-17 23 views
2

我正在爲一個簡單的監聽器來處理與之通話的外部節點。除了簡單的請求之外,節點還發送MultiPart消息,因此不允許我使用任何PHP SOAP庫(如果您知道任何與MultiPart消息的交易,請告訴我),並強制我使用請求中的原始數據身體,即php://input。沒有問題,除了UTF-8的支持。通過php讀取UTF-8 SOAP請求://輸入

PHP是目前非常簡單:

mb_internal_encoding('UTF-8'); 
echo file_get_contents('php://input'); 

ñ朝例如節點發送,節點會發送下面的聽衆:

... 
<message>}</message> 
... 

另一個例子是拉丁字符,示例č ć š đ ž Č Ć Š Đ Ž發送爲

... 
<message>c c s d z C C S D Z</message> 
... 

tc PDUMP顯示請求在UTF-8發送,但XML仍然含有無效字符:

POST /endpoint HTTP/1.0 
Content-Type: text/xml; charset=UTF-8 
SOAPAction: "" 
User-Agent: Axis2 
Host: IP:PORT 
Content-Length: 1196 

<?xml version='1.0' encoding='UTF-8'?> 
... 
<message>}</message> 
... 

假設節點正確編碼的數據,我能做些什麼在我結束弄清楚什麼是錯的?

回答

0

經過多次測試會話後,確定節點未發送UTF-8編碼數據,即使請求本身是以UTF-8發送的。沒有ETA時它會被修復:(

好消息,但是,php://input正確處理UTF-u!