最近需要用php创建webservice供C#和JAVA来调用,通过3天的搜索和尝试,终于成功在C#下调用,JAVA的调用还没开始,为防止忘记,在这里记录下来全过程。

本文参考了许多文章,文中也采用了其中的示例。

本文目录如下

一、php创建webservice

二、生成.wsdl文件

三、c#调用php的webservice

一个php创建webservice,并通过c#调用的真实实例

一、php创建webservice

1、php环境

我用的是windows的apache,php.ini文件中 extension=php_soap.dll 去掉注释即可,前提是已经安装了 php_soap.dll。

环境测试,在cmd窗口中输入如下命令来检测soap是否正常

c:\>php --ini    ;用来查看ini文件中的soap模块是否正常,它和phpinfo()看到的未必一致

c:\>php -i |findstr "soap"  ;用来看soap模块是否正常

c:\>php -r "new SoapClient('http://localhost/wsdl/person.wsdl');"  ;用来直接运行soap

 

2、php服务端文件(TestWebService.php)

<?php  
class TestWebService  
{  
    public function HelloWorld()  
    {  
        return array("HelloWorldResult"=>"welcome to dongzi world");  
    }  
 
    public function GetArray($args)  
        {  
          /*  
           注意,Web Service的方法在声明时至多一个参数,  
            可是在调用该方法时就必须传value1,value2两个参数。  
            (这一点十分令人费解,我的理解是,在调用该方法时,系统把所有参数都放到一个对象里传过来的)  
          */ 
 
        $value1 = $args->value1;    
        $value2 = $args->value2;//这两句是获取真正的参数  
   
        $arry = array($value1,$value2);  
 
        //返回值也很特别,不是直接返回$arry,而是把它放到一个对象里再返回。  
        return array("GetArrayResult"=>$arry);  
    }  
}  
//创建WebSevice实例  
$server = new SoapServer("TestWebService.wsdl");  
//指定类名  
$server->setClass("TestWebService");  
$server->handle();  
?>
View Code

相关文章: