2015-11-13 38 views
3

我正在學習如何使用SOAPPHP中創建和使用webservice。我client.php文件是這樣的:PHP:SOAP Webservice無法正常工作

require_once "lib/nusoap.php"; 

$client = new nusoap_client("http://localhost/ehsanashar/webservice/service.php?wsdl"); 
$book_name = "xyz"; 
$response = $client->call("price", array("name" => "$book_name")); 

if ($response == null) { 
    echo "Nothing Found"; 
} else { 
    echo "Book Data: ". $response; 
} 

和我service.php是這樣的:

require_once "lib/nusoap.php"; 
require_once "function.php"; 

$server = new nusoap_server(); 

$server->configureWSDL('webservice', 'urn:webservice'); 
$server->register(
    "price", 
    array("name" => "xsd:string"), 
    array("return" => "xsd:integer") 
); 

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

requires一個名爲function.php是這樣的:

function price($name) { 
    $details = array(
     'abc' => 100, 
     'xyz' => 200 
    ); 

    foreach ($details as $n => $p) { 
     if ($name == $n) { 
      $price = $p; 
     } 
     return $price; 
    } 
} 

當我運行文件client.phpresponse爲空,但它不應該,問題在哪裏?任何幫助?

回答

3

試試這個

FOR WAMP

client.php

require_once ('lib/nusoap.php'); 
$client = new soapclient('http://localhost/SOAP/server.php'); 

//Call a function at server and send parameters too 
//$response = $client->call('get_message',$param); 

$param = array('name' => 'xyz'); 
$response = $client->call('price',$param); 

//Process result 
if($client->fault) 
{ 
echo "FAULT: <p>Code: (".$client->faultcode."</p>"; 
echo "String: ".$client->faultstring; 
} 
else 
{ 
echo $response; 
} 

server.php

<?php 
//call library 
require_once ('lib/nusoap.php'); 
//using soap_server to create server object 
$server = new soap_server; 

//register a function that works on server 
$server->register('get_message'); 
$server->register('price'); 

// create the function 
function get_message($your_name) 
{ 
if(!$your_name){ 
return new soap_fault('Client','','Put Your Name!'); 
} 
$result = "Welcome to ".$your_name .". Thanks for Your First Web Service Using PHP with SOAP"; 
return $result; 
} 

function price($name){ 
    if(!$name){ 
return new soap_fault('Client','','Put Book name!'); 
} 
    $details=array(
     'abc' => 100, 
     'xyz' => 200 
    ); 

    foreach($details as $n => $p){ 
     if($name == $n){ 
      $price = $p; 
     } 
     } 
return "price is ". $price; 
    } 

// create HTTP listener 
$server->service($HTTP_RAW_POST_DATA); 
exit(); 
?> 

FOR XAMP

server.php

<?php 
//call library 
require_once ('lib/nusoap.php'); 
$URL  = "www.your-url.com"; 
$namespace = $URL . '?wsdl'; 
//using soap_server to create server object 
$server = new soap_server; 
$server->configureWSDL('pricetesting', $namespace); 

//register a function that works on server 
$server->register('hello'); 

// create the function 
function price($name){ 
    if(!$name){ 
return new soap_fault('Client','','Put Book name!'); 
} 
    $details=array(
     'abc' => 100, 
     'xyz' => 200 
    ); 

    foreach($details as $n => $p){ 
     if($name == $n){ 
      $price = $p; 
     } 
     } 
return "price is ". $price; 
    } 
// create HTTP listener 
$server->service($HTTP_RAW_POST_DATA); 
exit(); 
?> 

client.php

<?php 
require_once ('lib/nusoap.php'); 
$client = new soapclient("http://localhost/soap/server.php?wsdl"); 
//Call a function at server and send parameters too 
//$response = $client->call('get_message',$param); 

$param = array('name' => 'abc'); 
$response = $client->call('price',$param); 

//Process result 
if($client->fault) 
{ 
echo "FAULT: <p>Code: (".$client->faultcode."</p>"; 
echo "String: ".$client->faultstring; 
} 
else 
{ 
echo $response; 
} 
?> 
+1

感謝的人,你救我的時候:) –