2010-06-08 182 views
0

我想在这里获得一点帮助。PHP - Zend SOAP请求.NET SOAP服务器

我想通过Zend向PHP发送一个.NET SOAP服务器的请求。

我有WSDL文件,但它不包含任何头信息。 虽然我尝试添加自定义标题这似乎并没有工作,最糟糕的是 WSDL文件本身似乎并没有“正确” .....

这里是链接:http://www.speedex.gr/getvoutrans/getvoutrans.asmx 该WSDL可以在相同的链接加入找到WSDL

我的要求是:GetVouTrans

Thanx提前!

回答

0

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年开始的,所以你的里程可能会有所不同。