日期:2014-05-17  浏览次数:20566 次

nusoap wsdl 文件说明。。
我的服务器创建如下:
App::import('Vendor', 'nusoap/lib/nusoap');
$server = new soap_server; 
$server->configureWSDL('sum');
$server->register('sum',array('x'=>'xsd:string','y'=>'xsd:string'),array('return'=>'xsd:string'),'','http://localhost/ws/info/sum');  
$HTTP_RAW_POST_DATA = isset($HTTP_RAW_POST_DATA) ? $HTTP_RAW_POST_DATA : '';
$server->service($HTTP_RAW_POST_DATA);
//$this->set('data',$server);
$this->autoRender = false;
在浏览器里输入
http://localhost/ws/info?wsdl

返回xml信息中 包含这句
<service name="sum">
<port name="sumPort" binding="tns:sumBinding">
<soap:address location="http://localhost/ExampleProject/soap/soap.php"/>
</port>
</service>

请问 soap:address location的值 我们可以在创建$server 的时候 设置吗,因为用的是cakephp 使用默认值 会出现出错。。

------解决方案--------------------
给个参考例子:

PHP调用Webservice实例,看完就明白了

NuSoap是PHP环境下的WebService编程工具,用于创建或调用WebService。它是一个开源软件,是完全采用PHP语言编写的、通过HTTP收发SOAP消息的一系列PHP类,由NuSphere Corporation(http://dietrich.ganx4.com/nusoap/ )开发。NuSOAP的一个优势是不需要扩展库的支持,这种特性使得NuSoap可以用于所有的PHP环境,不受服务器安全设置的影响。  

方法一:直接调用

<?
/******************************************************************************/
/* 文件名 : soapclient.php
/* 说 明 : WebService接口客户端例程
/******************************************************************************/
include(‘NuSoap.php’);

// 创建一个soapclient对象,参数是server的WSDL
$client = new soapclient(‘http://localhost/Webservices/Service.asmx?WSDL’, ‘wsdl’);

// 参数转为数组形式传递
$aryPara = array(‘strUsername’=>’username’, ‘strPassword’=>MD5(‘password’));

// 调用远程函数
$aryResult = $client->call(‘login’,$aryPara);

//echo $client->debug_str;
/*
if (!$err=$client->getError()) {
print_r($aryResult);
} else {
print “ERROR: $err”;
}
*/

$document=$client->document;
echo <<<SoapDocument
<?xml version=”1.0″ encoding=”GB2312″?>
 <SOAP-ENV:Envelope SOAP-ENV:encodingStyle=”http://schemas.xmlsoap.org/soap/encoding/” xmlns:SOAP-ENV=”http://schemas.xmlsoap.org/soap/envelope/” xmlns:xsd=”http://www.w3.org/2001/XMLSchema” xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance” xmlns:SOAP-ENC=”http://schemas.xmlsoap.org/soap/encoding/” xmlns:si=”http://soapinterop.org/xsd“>
<SOAP-ENV:Body>
$document
</SOAP-ENV:Body>
 </SOAP-ENV:Envelope>
SoapDocument;

?>


方法二:代理方式调用

<?
/******************************************************************************/
/* 文件名 : soapclient.php
/* 说 明 : WebService接口客户端例程
/******************************************************************************/
require(‘NuSoap.php’);

//创建一个soapclient对象,参数是server的WSDL
$client=new soapclient(‘http://localhost/Webservices/Service.asmx?WSDL’, ‘wsdl’);

//生成proxy类
$proxy=$client->getProxy();

//调用远程函数
$aryResult=$proxy->login(‘username’,MD5(‘password’));

//echo $client->debug_str;
/*
if (!$err=$proxy->getError()) {
print_r($aryResult);
} else {
print “ERROR: $err”;
}
*/

$document=$proxy->document;
echo <<<SoapDocument
<?xml version=”1.0″ encoding=”GB2312″?>
 <SOAP-ENV:Envelope SOAP-ENV:encodingStyle=”http://schemas.xmlsoap.org/soap/encoding/” xmlns:SOAP-ENV=”http://schemas.xmlsoap.org/soap/envelope/” xmlns:xsd=”http://www.w3.org/2001/XMLSchema” xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance” xmlns:SOAP-ENC=”http://schemas.xmlsoap.org/soap/encoding/” xmlns:si=”http://soapinterop.org/xsd“>
<SOAP-ENV:Bo