【问题标题】:PHP: SOAP Webservice not working properlyPHP:SOAP Web 服务无法正常工作
【发布时间】:2015-11-13 17:34:30
【问题描述】:

我正在学习如何使用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);

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.php 时,response 为空,但它不应该是,问题出在哪里?有什么帮助吗?

【问题讨论】:

    标签: php web-services soap


    【解决方案1】:

    试试这个

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-12-28
      • 1970-01-01
      • 2015-03-06
      • 2018-01-08
      • 2022-01-13
      • 2012-01-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多