2013-10-03 96 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