目标:使用简单的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);