我在使用SoapServer + UTF-8很好地使用PHP时遇到了问题。任何时候任何人发送带有非英文字符的Soap Request(即有趣的引号,重音字符等),SoapServer都会抛出一个异常,说“Bad Request”。我尝试用utf8_decode解码请求,甚至HTML特殊字符编码文本。没有什么对我有用。
我正在寻找正确方向的一点,因为我此刻迷失了方向。
答案 0 :(得分:4)
确保使用UTF-8编码初始化SoapServer和SoapClient:
$client = new SoapClient("some.wsdl", array('encoding'=>'UTF-8'));
$server = new SoapServer("some.wsdl", array('encoding'=>'UTF-8'));
使用“有趣的引号,重音字符等”来处理请求的XML。验证
答案 1 :(得分:0)
明显的下一步是验证您收到的请求 实际编码为UTF-8。像WireShark这样的网络嗅探器(或者甚至可以使用普通的旧telnet客户端进行一些工作)可以让你检查传递给服务器的确切数据。仔细查看并确认它实际上是有效的UTF-8。