PHP - Zend Soap请求.NET SOAP服务器

时间:2010-06-08 08:45:23

标签: php .net zend-framework soap zend-soap

我想在这里得到一些帮助。

我正在尝试使用Zend从PHP向.NET SOAP服务器发送请求。

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

以下是链接:http://www.speedex.gr/getvoutrans/getvoutrans.asmx 通过添加?WSDL

可以在同一链接中找到WSDL

我的要求是:GetVouTrans

提前Thanx!

1 个答案:

答案 0 :(得分:0)

http://www.speedex.gr/getvoutrans/getvoutrans.asmx?op=GetVouTrans网址会显示预期的请求。

如果您要覆盖SoapClient::__doRequest功能,则可以查看发送的内容 (别忘了调用parent :: __ doRequest())

您甚至可以更改xml 以进行特定于.net的更改。

糟糕的SOAP并不总是在不同语言之间开箱即用 我遇到了php 5.2.0(debian)和java soap-server的问题,当我升级到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年开始的,所以你的里程可能会有所不同。