我是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'纳入同一文件夹
答案 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>';
从页面开始,您可能已经从中获取了极其过时的示例。