![](/img/trans.png)
[英]How to set content type to 'application/soap+xml; charset=utf-8' in PHP while SOAP request
[英]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.