使用Zend_Soap_Client读取数据

时间:2012-07-21 18:31:19

标签: php soap zend-soap

我是Zend_Soap_Client的新手。我将以下代码作为示例,并尝试了解它背后的原因。我是否正确理解它连接到远程服务器并读取指定的数据?最后,据我所知,它应该在test.txt中保存这些数据。

我尝试运行此代码(我有必要的证书)。问题是没有数据保存到test.txt。那么,有人可以向我解释一下这项技术,还是给我一个关于类似主题的好教程的链接?特别是,我对如何将必要的数据保存到本地XML文件或数组非常感兴趣。

P.S。如果我使用了一些不正确的定义,我会道歉,因为正如我在开始时提到的,我是Zend_Soap_Client的新手和相关技术。

$wsdl = 'tttest.wsdl';

$options = array(
    'local_cert' => 'certificate.pem',
    'soap_version' => SOAP_1_1
);

$client = new Zend_Soap_Client($wsdl, $options);

$p = array(
    'endUserId' => 'demo',
    'sendTime' => array('value' => date("Y-m-d H:i:s")),
    'eaupId' => array('chainDate' => array('value' => $chaindate), 'sequenceNumber' => 1)
);
$webServices = $client->retrieveEAUPCDRs($p);

$line = $client->getLastResponse();
$line = substr($line, 110);
$line = substr($line, 0, -22);
$xml = simplexml_load_string($line);

$result = $xml->xpath('//@ns3:title | //ns2:beginPosition | //ns2:endPosition | //ns4:upperLimit | //ns4:lowerLimit | //ns8:conditionalRouteType');

$filename = 'test.txt';
if ($fh = fopen($filename, "r")) {
    while (!feof($fh)) {
        $line = fgets($fh);
        if (strlen($line) != 0) {
            $chars = explode(";", $line, 5);
            $np[$chars[0]] = "$chars[3],$chars[2]";
        }
    }
    fclose($fh);
};

1 个答案:

答案 0 :(得分:1)

此代码不会执行您认为正在执行的操作。

前三分之二(包括对xpath()的调用)确实连接到服务器并获取一些信息,这些信息最终放在$result变量中。但是,最后11行不使用前一代码中的任何数据($line正在最后一位重用)。

此外,正在调用fopen()" r"选项,表示只读。

我建议花一些时间在http://php.net上研究本代码中使用的各种PHP函数和语言结构,然后访问Zend Framework手册以获取有关Zend_Soap_Client的更多信息:{{3 }}