0

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

问题: SOAP 调用完成后没有任何错误,我可以看到。我可以在 WSDL 上调用__getFunctions(),所以看起来通信正常。但是,通话很快结束。太快了,这告诉我我的查询有问题。结果的大小应该在 1-2 MB 左右。但我的结果对象似乎是空的。他的结果对象包含 1400 个对象。浏览器报告退出状态 200。因此没有连接错误。

问题:我是否正确地进行了查询,我是否正确地阅读了结果,还是应该完全做其他事情?我不是新手 PHP 程序员,但绝不是专家。这是我第一次使用 SOAP、WSDL 和 WCF。我已经研究了近3天了。SO和谷歌一直提供答案。我发现了如何做到这一点的各种例子,而且,看起来很简单。然而我一定是错过了什么。我筋疲力尽,不知所措。这个让我难住了。

这就是我正在做的事情: 为了测试,我还没有写入文件。只是做一个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);
4

0 回答 0