PHP:SOAP Web 服务无法正常工作

标签 php web-services soap

我正在学习如何使用 SOAPPHP 中创建和使用 webservice。我的 client.php 文件是这样的:

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);

需要一个名为function.php 的文件,如下所示:

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

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

当我运行文件client.php时,response为null,但不应该,问题出在哪里?有帮助吗?

最佳答案

试试这个

用于 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(); 
?> 

对于 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; 
} 
?> 

关于PHP:SOAP Web 服务无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33687270/

相关文章:

php - 将组合字符串拆分为数组

java - 覆盖 JAX-WS WSDL 中的端点地址抛出 InaccessibleWSDLException

python - 完全禁用 SUDS 模式缓存

java - 没有wsdl的apache cxf客户端

javascript 无法在 safari 中运行

php - 数据库自定义排序顺序

php - 列计数与第 1 行的值计数不匹配 - 检查 MySQL 中的某些列是否唯一

java - org.codehaus.jackson.map.JsonMappingException : Infinite recursion (StackOverflowError)

c# - 从 Silverlight 调用 WCF 服务

c# - WCF 客户端挂起响应