当我在soap请求之后调用__getLastRequest时,我正在输出htmlentities编码XML的SOAP请求。
__getLastRequest如下所示:
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://autotask.net/ATWS/v1_5/"><SOAP-ENV:Body><ns1:query><ns1:sXML>
<queryxml>
<entity>UserDefinedFieldDefinition</entity>
<query>
<field>id<expression op="greaterthan">0</expression></field>
</query>
</queryxml>
</ns1:sXML></ns1:query></SOAP-ENV:Body></SOAP-ENV:Envelope>
最奇怪的是,SOAP请求在很大程度上都有效。有些时候它不起作用,所以在调试这个看似断断续续的问题时,我发现了关于__getLastRequest的这个非常奇怪的问题。
代码很简单:
return $this->__soapCall('query',
array($parameters),
array(
'uri' => 'http://autotask.net/ATWS/v1_5/',
'soapaction' => ''
)
);
参数如下所示:
(
[sXML] =>
<queryxml>
<entity>UserDefinedFieldDefinition</entity>
<query>
<field>id<expression op="greaterthan">0</expression></field>
</query>
</queryxml>
)
__ getLastResponse似乎返回了伪造的xml。
我觉得__soapCall是间歇性地对$参数进行htmlen编码,或者至少__getLastResponse在被返回之前被错误编码。我倾向于后者,因为大部分请求都有效。有时他们不这样做。从数据的角度来看,请求永远不会改变。
以前有没有人见过这个问题?
提前谢谢你。