2

我正在为一个与它交谈 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>
...

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

4

1 回答 1

0

经过几个测试会话,确定节点没有发送 UTF-8 编码的数据,即使请求本身是以 UTF-8 发送的。没有ETA何时修复:(

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

于 2013-01-27T19:37:48.923 回答