Nusap代码无法正常工作

时间:2013-12-16 07:30:41

标签: php wsdl nusoap

我是wsdl的新手,nusoap代码。我正在尝试使用Nousoap实现一个简单的hello world编程。我在 wsdl_hello_server.php 中实现了服务器代码,

<?php

require_once('nusoap.php');
  $server = new soap_server();
     $server->register('hello');

function hello($name) {
    return 'Hello, ' . $name;
}

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

?>

和客户端代码保存在文件 wsdl_hello_client.php 中,

<?php

require_once('nusoap.php');


$client = new soapclient('http://localhost:8888/nousoap_example/wsdl_hello_server.php');



$result = $client->call('hello', array('name' => 'world'));


print_r($result);
?>

当我运行客户端时,它不会给出任何结果(空白页面)。如果我尝试运行服务器代码,它会给我,

<SO`AP-ENV:Envelope SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
   <SOAP-ENV:Body>
       <SOAP-ENV:Fault>
           <faultcode xsi:type="xsd:string">SOAP-ENV:Client</faultcode>
            <faultactor xsi:type="xsd:string"/>
                <faultstring xsi:type="xsd:string">method '' not defined in service</faultstring>
                 <detail xsi:type="xsd:string"/>
       </SOAP-ENV:Fault>
      </SOAP-ENV:Body>
  </SOAP-ENV:Envelope>`

忘记了什么?请帮帮我??

注意:我已将'nusoap.php'纳入同一文件夹

2 个答案:

答案 0 :(得分:0)

您可以尝试在网址末尾添加?wsdl ,例如:

$client = new soapclient('http://localhost:8888/nousoap_example/wsdl_hello_server.php?wsdl');

答案 1 :(得分:0)

我的猜测是$ HTTP_RAW_POST_DATA未设置;因此,您向''发送$server->service(),而''不是现有功能。尝试调试$ HTTP_RAW_POST_DATA。

您还可以通过添加以下内容来调试客户端和服务器:

// Display the request and response
echo '<h2>Request</h2>';
echo '<pre>' . htmlspecialchars($client->request, ENT_QUOTES) . '</pre>';
echo '<h2>Response</h2>';
echo '<pre>' . htmlspecialchars($client->response, ENT_QUOTES) . '</pre>';

从页面开始,您可能已经从中获取了极其过时的示例。