PHP - Zend SOAP请求.NET SOAP服务器
问题描述:
我想在这里获得一点帮助。PHP - Zend SOAP请求.NET SOAP服务器
我想通过Zend向PHP发送一个.NET SOAP服务器的请求。
我有WSDL文件,但它不包含任何头信息。 虽然我尝试添加自定义标题这似乎并没有工作,最糟糕的是 WSDL文件本身似乎并没有“正确” .....
这里是链接:http://www.speedex.gr/getvoutrans/getvoutrans.asmx 该WSDL可以在相同的链接加入找到WSDL
我的要求是:GetVouTrans
Thanx提前!
答
http://www.speedex.gr/getvoutrans/getvoutrans.asmx?op=GetVouTrans url显示预期的请求。
如果您将覆盖SoapClient::__doRequest函数,您可以检查您要发送的内容。
(不要忘记调用父:: __ doRequest())
你甚至可以更改XML使.NET的具体变化。
糟糕的SOAP并不总是在不同的语言之间开箱即用。
我已经受够了PHP 5.2.0(Debian的)和一个Java SOAP服务器的问题,这个问题在稀薄的空气中消失,当我升级到PHP版本5.2.8
在__doRequest手册页的注释表明:
class MSSoapClient extends SoapClient {
function __doRequest($request, $location, $action, $version) {
$namespace = "http://tempuri.com";
$request = preg_replace('/<ns1:(\w+)/', '<$1 xmlns="'.$namespace.'"', $request, 1);
$request = preg_replace('/<ns1:(\w+)/', '<$1', $request);
$request = str_replace(array('/ns1:', 'xmlns:ns1="'.$namespace.'"'), array('/', ''), $request);
// parent call
return parent::__doRequest($request, $location, $action, $version);
}
}
$client = new MSSoapClient(...);
但是这个评论是从2007年开始的,所以你的里程可能会有所不同。