繁体   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