通过读取UTF-8 SOAP请求php://input

通过读取UTF-8 SOAP请求php://input,php,post,soap,raw-post,Php,Post,Soap,Raw Post,我正在为一个外部节点开发一个简单的侦听器,并与之进行SOAP对话。除了简单的请求之外,node还发送多部分消息,因此不允许我使用任何PHP SOAP库(如果您知道任何处理多部分消息的方法,请告诉我),并迫使我处理来自请求体的原始数据,即php://input。除了UTF-8支持之外,它没有任何问题 PHP目前非常简单: mb_internal_encoding('UTF-8'); echo file_get_contents('php://input'); 例如,当向节点发送ñ时,节点将向侦听

我正在为一个外部节点开发一个简单的侦听器,并与之进行SOAP对话。除了简单的请求之外,node还发送多部分消息,因此不允许我使用任何PHP SOAP库(如果您知道任何处理多部分消息的方法,请告诉我),并迫使我处理来自请求体的原始数据,即
php://input
。除了UTF-8支持之外,它没有任何问题

PHP目前非常简单:

mb_internal_encoding('UTF-8');
echo file_get_contents('php://input');
例如,当向节点发送
ñ
时,节点将向侦听器发送以下内容:

...
<message>}</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>
...
POST/endpoint HTTP/1.0
内容类型:text/xml;字符集=UTF-8
SOAPAction:“
用户代理:Axis2
主机:IP:端口
内容长度:1196
...
}
...

假设节点正确地编码了数据,我该怎么做才能找出问题所在?

在几次测试会话后,确定节点没有发送UTF-8编码的数据,即使请求本身是以UTF-8发送的。固定时间没有预计到达时间:(

然而,好消息是,
php://input
正确处理UTF-u

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>
...