Home  >  Article  >  Backend Development  >  PHP调用WCF总结

PHP调用WCF总结

WBOY
WBOYOriginal
2016-06-13 12:18:14971browse

PHP调用WCF小结

新工作第三周,做了3年多的.Net,突然急转弯做PHP,漂移过弯,速度180迈

由于数据的整合,在项目中不得不使用PHP调用WCF

一头的雾水,网上相关的资料少又少,在phpChina发个帖子,还没有人回,看来博客园才是永远的家

感谢dudu大神的不厌其烦的回复帮助,Thanks

==========以下是正文===============

使用PHP调用WCF非常简单,所有的过程,只需要两个字,仔细

一、准备工作:

1.soap.dll

查看PHP安装包里面的ext 是否有 php_soap.dll [PHP自动集成的,一般情况下都会存在,不存在可以在网上下载]

2.修改php.ini文件

第一步确认后,继续找到PHP的配置文件。由于每个人的环境不同,比如有的是使用集成开发环境,一键安装

有的同学是自己分别安装,可能php.ini的位置会不同。此时的做法是使用 phpinfo()进行查看

找到文件后,打开文件,

查找到 

;extension=php_soap.dll

这一行,然后将前面的分号去掉。

如果没有找到这一行,不用担心,自己手动添加这一行也可以.

3.重启apach

二、调用WCF

以上123步完成后,我们的准备工作就完成了,接下来就是写代码

假设大家都会WCF,都有PHP的基础

1.发布一个WCF以备调用

下面是WCF的两个方法

public string SayHello()
{
return "Hello World";
}

public string GetData(string value)
{
         return "You entered is : " + value;
}

2.PHP端调用

$wcfURL = 'http://192.168.3.102/Service1.svc?wsdl';//【这是WCF的地址】
$wcfClient = new SoapClient ( $wcfURL );

$result1 = $wcfClient->SayHello ();
print_r ( $result1 );

echo '
';
echo $result1->SayHelloResult;//这里是SayHello+Result合在一起写,具体原因我不知道

以上PHP代码正常情况下应该输出如下

stdClass Object ( [SayHelloResult] => Hello World )

Hello World

第一个方法就调用成功了

我们继续调用有参数的方法

这个时候一定要用WCF测试客户端进行测试WCF

看到我一开始的WCF的方法,参数是 GetData(string value),而这里显示t,这是因为在WCF是同事帮我写的,他偷懒,直接在定义的时候写的 GetData(string t)。为了这个偷懒,付出了沉重的代码,整整10分钟!

详情连接:http://q.cnblogs.com/q/71331/

以下是修改后的PHP代码

$args = array('t' => '312');$wcfClient->GetData($args);<br>echo $result->GetDataResult;<br>echo '<br>';<br>print_r ( $result );

以上正常输出应该是

You entered is :312 
stdClass Object ( [GetDataResult] => You entered is : 312) 

 

以上就完成了PHP对WCF的调用了,当然,有些小伙伴会问高级一点的呢,比如整个类什么的作为参数,返回个类什么的................弱弱的说,还没有玩到那么高级的..

再次谢谢dudu

以下为参考文章:http://blog.csdn.net/love__coder/article/details/6067611

http://www.cnblogs.com/tianbang/archive/2012/05/07/2489149.html

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn