2013-10-03 65 views
0

我想将服务器的数据以多行显示到客户端。当前的实现表明“ABC”的客户 这里只有一行即值在服务器端:使用nusoap创建一个简单的php web服务

<?php 
    function getStockQuote($symbol) { 

     mysql_connect('server','user','pass'); 
     mysql_select_db('test'); 
     $query = "SELECT stock_price FROM stockprices " 
       . "WHERE stock_symbol = '$symbol'"; 
     $result = mysql_query($query); 

     $row = mysql_fetch_assoc($result); 
     return $row['stock_price']; 
    } 

    require('nusoap.php'); 

    $server = new soap_server(); 

    $server->configureWSDL('stockserver', 'urn:stockquote'); 

    $server->register("getStockQuote", 
        array('symbol' => 'xsd:string'), 
        array('return' => 'xsd:decimal'), 
        'urn:stockquote', 
        'urn:stockquote#getStockQuote'); 

    $HTTP_RAW_POST_DATA = isset($HTTP_RAW_POST_DATA) 
          ? $HTTP_RAW_POST_DATA : ''; 
    $server->service($HTTP_RAW_POST_DATA); 
?> 

这里是客户端:

<?php 
    require_once('nusoap.php'); 

    $c = new soapclient('http://localhost/stockserver.php'); 

    $stockprice = $c->call('getStockQuote', 
       array('symbol' => 'ABC')); 

    echo "The stock price for 'ABC' is $stockprice."; 

?> 
+0

邮政错误,请修改建议 – Sal00m

+0

我想从服务器返回复式行给客户后,我该怎么办呢?请帮助 – atul

回答

1

您必须指定一个WSDL作为端点,所以改变与WSDL端点,以及需要调用你的方法(call方法不会在服务器上存在)

,我测试和工程我的客户端代码:

<?php 
require_once('nusoap.php'); 

$c = new soapclient('http://localhost/stockserver.php?wsdl'); 

$stockprice = $c->getStockQuote('ABC'); 
echo "The stock price for 'ABC' is $stockprice."; 

?> 

并请停止使用过时mysql_ *函数

+0

我也尝试过.php?wsdl,但给出了相同的错误 – atul

+0

看到我编辑的答案,第一个错误说,找不到wsdl文件,如果你不改变'call'方法,那么说那里没有方法'调用' – Sal00m

+0

我尝试了我的更改并且完美地工作(y在服务器方法中使用return“Hello”)。注:我再次改变,以避免通知错误 – Sal00m