簡體   English   中英

通過php:// input讀取UTF-8 SOAP請求

[英]Read UTF-8 SOAP request through php://input

我正在為外部節點與SOAP進行對話的簡單偵聽器。 除了簡單的請求之外,節點還發送MultiPart消息,因此不允許我使用任何PHP SOAP庫(如果您知道任何與MultiPart消息打交道的信息,請讓我知道),並迫使我使用請求中的原始數據正文,即php://input 除了UTF-8支持外,它沒有任何問題。

目前,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>
...

tcpdump顯示請求以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>
...

假設節點正確地編碼了數據,那末我該怎么辦才能找出錯誤所在?

經過幾次測試會話后,即使請求本身是以UTF-8發送的,該節點仍未發送UTF-8編碼的數據。 何時修復沒有ETA :(

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

暫無
暫無

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

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