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 に答える