PHP5 SoapClient使用WCF - 但返回的对象为空,没有错误

时间:2013-03-29 11:30:35

标签: php xml soap wsdl

目标:使用简单的WCF4服务。 WCF采用2个参数,DateStart& DateEnd as yyyy-MM-dd。返回的结果应包含每个具有大约16个属性值的对象.WCF服务已设置并由其他人管理。他向我保证,一切正常,因为他已经编写了一个C#测试实用程序,用于从电线的另一侧进行测试。 (即模拟像我一样的外部客户端调用)。他回来了大约1400件物品 使用我的日期范围。

问题: SOAP调用完成后没有出现任何错误。我可以在WSDL上调用 __ getFunctions(),因此通信似乎正在运行。但是,调用很快就完成了。很快,这告诉我查询出错了。结果应该是大约1-2 MB。但我的结果对象似乎是空的。他的结果对象包含1400个对象。浏览器报告退出状态200.因此没有连接错误。

问题:我是否正确地进行了查询,我是在正确阅读结果还是应该完全做其他事情?我不是新手PHP程序员,但绝不是专家。这是我第一次使用SOAP,WSDL和WCF。我已经研究了近3天了。所以。谷歌总是提供答案。我找到了各种如何做到这一点的例子,看起来很简单。但我必须遗漏一些东西。我筋疲力尽,结束了。这个让我难过。

以下是我正在做的事情: 为了测试我还没有写入文件。只需执行 var_dump()即可进行测试。这可以很好地从 __ getFunctions()调用中获得结果。但它似乎不适用于实际的WSDL函数调用。我该怎么办?我也在尝试下载SOAPUI,但我的下载不断下载。不知道那里发生了什么。代码:

define('NEWLINE', "<br />\n");
define('DUMPFILE','/wcf.xml');

// SOAP client
ini_set('soap.wsdl_cache_enabled', '1'); 
//ini_set('soap.wsdl_cache_ttl', '0'); 

$wsdl = $url.'?wsdl';

$soapClient = new SoapClient($wsdl, array('cache_wsdl' =>   WSDL_CACHE_NONE,'keep_alive'=>1));

var_dump($soapClient->__getFunctions()); 
// SOAP call
////DATE FORMAT yyyy-MM-dd
$args->DateStart    = "2013-03-28";
$args->DateEnd  = "2013-03-29";
try
{
    $result = $soapClient->GetScheduleData($args);
}
catch (SoapFault $fault)
{
    echo "Fault code: {$fault->faultcode}" . NEWLINE;
    echo "Fault string: {$fault->faultstring}" . NEWLINE;
    if ($soapClient != null){
        $soapClient = null;
    }
    exit();
}
$soapClient = null;

var_dump($result);
//file_put_contents(DUMPFILE,$result);

0 个答案:

没有答案