nusoap對於php4來説是挺好的選擇.php5自帶soap
nusoap下載地址:http://sourceforge.net/projects/nusoap/
一:使用
將lib文件夾放在你的項目下,使用 require_once('lib/nusoap.php'); 引用
二:簡單調用
C#端
[WebMethod]
public string testsoup( string objTime)
... {
return objTime+"我暈kao";
}
public string testsoup( string objTime)
... {
return objTime+"我暈kao";
}
php端
<?
php
require_once ( ' lib/nusoap.php ' );
$client = new soapclientw( ' http://localhost/CDBWeb/Search/WebService/cp1897books.asmx?WSDL ' , true );
$client -> soap_defencoding = ' UTF-8 ' ;
$client -> decode_utf8 = false ;
$err = $client -> getError();
if ( $err ) {
echo ' <h2>Constructor error</h2><pre> ' . $err . ' </pre> ' ;
}
$ParamArr = array (
' objTime ' => " 2008-03-05 " ,
);
$param = array ( ' parameters ' => $ParamArr );
$result = $client -> call( ' testsoup ' , $param , '' , '' , false , true );
if ( $client -> fault)
{
echo ' <h2>Fault (This is expected)</h2><pre> ' ; print_r ( $result ); echo ' </pre> ' ;
}
else
{
$err = $client -> getError();
if ( $err )
{
echo ' <h2>Error</h2><pre> ' . $err . ' </pre> ' ;
} else {
echo ' <h2>Result</h2><pre> ' ; print_r ( $result ); echo ' </pre> ' ;
}
}
?>
require_once ( ' lib/nusoap.php ' );
$client = new soapclientw( ' http://localhost/CDBWeb/Search/WebService/cp1897books.asmx?WSDL ' , true );
$client -> soap_defencoding = ' UTF-8 ' ;
$client -> decode_utf8 = false ;
$err = $client -> getError();
if ( $err ) {
echo ' <h2>Constructor error</h2><pre> ' . $err . ' </pre> ' ;
}
$ParamArr = array (
' objTime ' => " 2008-03-05 " ,
);
$param = array ( ' parameters ' => $ParamArr );
$result = $client -> call( ' testsoup ' , $param , '' , '' , false , true );
if ( $client -> fault)
{
echo ' <h2>Fault (This is expected)</h2><pre> ' ; print_r ( $result ); echo ' </pre> ' ;
}
else
{
$err = $client -> getError();
if ( $err )
{
echo ' <h2>Error</h2><pre> ' . $err . ' </pre> ' ;
} else {
echo ' <h2>Result</h2><pre> ' ; print_r ( $result ); echo ' </pre> ' ;
}
}
?>
注意:當在php5下運行,發生soapclient無法打開的錯誤,因php5自帶soap,只須將lib/nusoap.php的soapclient改名即可(在調用時使用更改的名稱,上面php代碼使用了"soapclientw"),nusoap.php更該后的一些代碼片斷如下:
/
class soapclientw extends nusoap_base {
var $username = '' ;
var $password = '' ;
var $authtype = '' ;
var $requestHeaders = false ; // SOAP headers in request (text)
var $responseHeaders = '' ; // SOAP headers from response (incomplete namespace resolution) (text)
var $document = '' ;
function soapclientw( $endpoint , $wsdl = false , $proxyhost = false , $proxyport = false , $proxyusername = false , $proxypassword = false , $timeout = 0 , $response_timeout = 30 ){
$this -> endpoint = $endpoint ;
$this -> proxyhost = $proxyhost ;
$this -> proxyport = $proxyport ;
$this -> proxyusername = $proxyusername ;
$this -> proxypassword = $proxypassword ;
$this -> timeout = $timeout ;
$this -> response_timeout = $response_timeout ;
// make values
if ( $wsdl ){
$this -> endpointType = ' wsdl ' ;
class soapclientw extends nusoap_base {
var $username = '' ;
var $password = '' ;
var $authtype = '' ;
var $requestHeaders = false ; // SOAP headers in request (text)
var $responseHeaders = '' ; // SOAP headers from response (incomplete namespace resolution) (text)
var $document = '' ;
function soapclientw( $endpoint , $wsdl = false , $proxyhost = false , $proxyport = false , $proxyusername = false , $proxypassword = false , $timeout = 0 , $response_timeout = 30 ){
$this -> endpoint = $endpoint ;
$this -> proxyhost = $proxyhost ;
$this -> proxyport = $proxyport ;
$this -> proxyusername = $proxyusername ;
$this -> proxypassword = $proxypassword ;
$this -> timeout = $timeout ;
$this -> response_timeout = $response_timeout ;
// make values
if ( $wsdl ){
$this -> endpointType = ' wsdl ' ;