我之前运行的是wampserver 2.4并且所有api功能都运行良好,但是现在当我使用soapClient时,我收到了一些我们访问的Web服务的错误。
“看起来我们没有XML文档”
经过一段时间的研究,看起来响应中有BOM字符,但之前的版本效果很好。我无法降级回以前的版本,因为我需要5.4.x版本的php用于项目中的其他代码部分。
当我输出最后一个会话时,它缺少最终的>来自肥皂信封的反应。 在我遇到问题的另一个api中,它在响应开始时导致了bom字符。相当令人沮丧。
我已经尝试更改php.ini和httpd.conf中的设置但是它没有帮助。
我为一个扩展SoapClient的肥皂响应做了一个“黑客”,但这只会有效,并且在我管理的所有项目中都不实用。 它是基于我在这里看到的东西,并且确实可以用于某些响应而不是其他响应。
public function __doRequest($req, $location, $action, $version = "SOAP_1_1"){
$response = parent::__doRequest($req, $location, $action, $version );
$response = preg_replace( '/^(\x00\x00\xFE\xFF|\xFF\xFE\x00\x00|\xFE\xFF|\xFF\xFE|\xEF\xBB\xBF)/', "", $response ) ;
$response = mb_convert_encoding($response, "UTF-8",'HTML-ENTITIES');
if (substr($response,-1) != ">"): $response .= ">";endif;
return $response;
}
有时在响应体内也有一个随机实体,这似乎也会引起一些问题。
在这个阶段,我已经浪费了整整2天的时间来研究这个问题,但我找不到任何能够正确阅读这些答案的解决方案。
我尝试添加 AddDefaultCharset utf-8 DefaultType application / xml 到httpd.conf
并在我放入的php.ini中 default_charset =“utf-8” 并尝试过
zend.multibyte = 1
detect_unicode = 1
zend.script_encoding = 1
wampserver 2.4正在使用apache 2.4.4和php 5.4.12
如果有人能帮助我并帮助我保持理智,那就太棒了。谢谢。