(一)基于PHP——WSDL的创建(NON-WSDL篇)

环境:WAMP

1、打开php对SOAP模块的支持,只要在php.ini中将 extension=php_soap.dll 前面的“;”去掉,然后重启apache。

2、建立两个虚拟目录便于调试,并绑定域名。
    (1)虚拟目录创建:
现在E盘建立两个目录,service和client
        在wamp安装目录中顺着路径C:\wamp\bin\apache\Apache2.2.17\conf\extra,找到httpd-vhosts.conf

NameVirtualHost 10.0.18.145:80



<VirtualHost 10.0.18.145:80>

ServerName www.mysoapclient.cn

ServerAlias mysoapclient.cn

DocumentRoot e:/client

</VirtualHost>



<VirtualHost 10.0.18.145:80>

ServerName www.mysoapservice.cn

ServerAlias mysoapservice.cn

DocumentRoot e:/service

</VirtualHost>
 

(2)修改虚拟目录的权限,在httpd.config中添加:

<Directory "E:/client/">

Options Indexes FollowSymLinks

AllowOverride all

Order Allow,Deny

Allow from all

</Directory>



<Directory "E:/service">

Options Indexes FollowSymLinks

AllowOverride all

Order Allow,Deny

Allow from all

</Directory>

然后重新启动Apache!

(3)修改host文件,在运行中打开C:\WINDOWS\system32\drivers\etc\,打开hosts文件添加:

10.0.18.145 www.mysoapclient.cn

10.0.18.145 www.mysoapservice.cn

注:方便测试,你懂的!
(4)写个index.php文件放到虚拟目录e:/service和e:/client中看是否创建成功!

<?php

echo "Create OK!"

?>
 


输入域名:

环境大功告成!

注意:会遇到的问题:虚拟目录指定注意斜杠和反斜杠,写错就麻烦了,还有一个就是修改conf文件的时候,不要修改错哦,如果错了,wamp会告诉你,重启时一直停留在“黄灯”。

3、先实现无WSDL(NON-WSDL)方式。
     删除掉service和client目录中的index.php,分别在不同目录中创建文件service.php和client.php。
service.php
 

  1. <?php
    
    function GetInfo(){
    
    return date('Y-m-d');
    
    }
    
    $soap=new SoapServer(null,array('uri'=>"http://www.mysoapservice.cn/service.php"));
    
    $soap->addFunction('GetInfo');
    
    $soap->handle();
    
    ?>

     

  2.  

//浏览器中测试,没有任何东西说明初步成功,
client.php

<?php

header('Content-Type:text/html;charset=utf-8');

try {

$soap = new SoapClient(null,array('location'=>'http://www.mysoapservice.cn/service.php','uri'=>'http://www.mysoapservice.cn/service.php'));

echo $soap->GetInfo()."<br>";//调用方法一

echo $soap->__soapcall("GetInfo",array());//调用方法二

}catch(SoapFault $e){

echo "Soap error ".$e->getMessage();

}catch(Exception $e){

echo "Exception error ".$e->getMessage();

}

?>
 

第一个参数还是wsdl,这里为null,
第二个参数中必须包含命名空间(uri),这两个参数都要和需要访问的SoapServer一致,而执行地址(location)为SoapServer的php访问地址。

注意:常见错误:
<a>Soap error looks like we got no XML document
<b>Fatal error: Uncaught SoapFault exception: [Client] looks like we got no XML document in E:\client\client.php:5 Stack trace: #0 E:\client\client.php(5): SoapClient->__call('GetInfo', Array) #1 E:\client\client.php(5): SoapClient->GetInfo() #2 {main} thrown in E:\client\client.php on line 5
上面两个报错其实是一样的,b是没有加抛出异常时候的原样。

O(∩_∩)O哈哈~注意:非常重要,
(1)在service.php中不要包含echo,不然会死的很难看的。
(2)不要包含非法字符。
(3)保存的时候一定要存为UTF-8无BOM.




一番努力后看到了:
2011-11-09
2011-11-09

(二)基于PHP——简单的WSDL的创建(WSDL篇)

(三)基于PHP——复杂的WSDL的创建(WSDL篇)

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值