PHP调用WCF提供的方法

一、准备工作

         1、安装wampserver:过程略

         2、配置wampserver:

                                          

                   2.1打开php.ini文件,去掉 ;extension=php_soap.dll 这里那个分号。

           也有说把这个 ;extension=php_openssl.dll前面的分号也去掉的。

 

             2.2 如上图,将php_soap打上√。

       

       2.3 如上图,打开httpd.conf文件,找到Listen 80 ,将80端口改成一个较大的端口,如8000。因为80端口也能别的程序用着。

          在这个directory里面有php页面。Index.php就是默认的页面。在浏览器里输入  http://localhost:8000/   会进入默认的首页

 

二、建立WCF服务

     可以直接在Web项目里,右键—添加---新建项---wcf服务,会生成如下两个文件。

    

     在这两个文件中进行测试。上面这样操作省了配置,还有启动服务。只有运行Web项目,服务就起来了。

     注意事项:接口和实现类里面对应方法的参数名要一致。

     如下, 参数id名要一样。Article是一个文章类

在IService1.cs中:

      [OperationContract]

Article GetArticle(string id);

在Service1.svc中:

       Public  Article GetArticle(string id)  

                {

                            //do something

}

               

三、PHP调用WCF中的方法

    Php可以调用的C#方法格式(已测试):

                   下面是c#方法格式

                   Public  string   Fun();

                 Public  string   Fun(string  str) ;  //这个只测过传string和int类型,参数数量可以多个。

        Public  Article  GetArticle(string id);

        Publis  String[]   GetStrs();

        Public  List

   GetArticleList(string  flag);

        Public  void  AddArticle(Article  art);

        再次强调,参数名要和对应接口里的参数名一致。

       --------------------------------------------------------------------------------------------------------------------

                Php调用:

【Public  void  AddArticle(Article  art)】

说明:下面的服务地址,可以在Service1.svc文件上右键—浏览器查看

        

$client = new SoapClient ('http://localhost:8000/WCF/Service1.svc?wsdl');

           $result= $client->AddArticle(

array (

'art' => array (

'TITLE' => '新建的php文章标题'

)

));

?>

注意art是Article类的一个实例  , TITLE是Article类中的一个属性。

【Public  string   Fun(string  str);】

        

$client = new SoapClient ('http://localhost:8000/WCF/Service1.svc?wsdl');

           $obj->str="3";

$result= $client-> Fun ($obj);

echo $ result -> FunResult;

?>

注意art  , TITLE是Article类中的一个属性。

 

【Public  Article  GetArticle(string id);】

$client = new SoapClient ('http://localhost:8000/WCF/Service1.svc?wsdl');

$obj->id="3";

   $result= $client->GetArticle($obj);

echo var_export($result->GetArticleResult->TITLE);

echo "
";

echo var_export($result->GetArticleResult->AUTHOR);

?>

注意:TITLE和AUTHOR是Article类的两个属性。

 

【Public  List
   GetArticleList(string  flag);】

$client = new SoapClient ('http://localhost:8000/WCF/Service1.svc?wsdl');

$obj-> flag ="3";

$result= $client-> GetArticleList ($obj);

           echo var_export($result-> GetArticleListResult-> Article);

           echo var_export($result-> GetArticleListResult -> Article [0]-> TITLE);

 

 

【Publis  String[]   GetStrs();】

$client = new SoapClient ('http://localhost:8000/WCF/Service1.svc?wsdl');

$result =$client->GetStrs();

$aa= $result->GetStrsResult;   //输出整个数组

//$aa= $result->GetStrsResult->string[0];   //输出数组中第0项

 print_r( $aa);

转载于:https://www.cnblogs.com/lanshanke/p/4899291.html

你可能感兴趣的:(php,c#)