龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > web编程 > php编程 >

soap 应用

时间:2014-07-22 14:49来源: 作者: 点击:
分享到:
<无详细内容>
php SOAP例子(web servers)  
2010-06-23 14:08:24|  分类: php笔记 |字号 订阅
php 先要开启 php_soap模块
一。
方法1
服务器端 文件叫 server.php
<?php
$soap = new SoapServer(null,array('uri'=>"http://10.10.10.24/"));//输入本台服务器的ip地址
$soap->addFunction('say');                                    //添加输出函数
$soap->addFunction(SOAP_FUNCTIONS_ALL);    //不要忘了这个
$soap->handle();                                                    //注意
function say($sth){
    return $sth;
}

?>
客户端  输出的是 hello world
<?php
try {
    $client = new SoapClient(null,
        array('location' =>"http://10.10.10.24/server.php",'uri' => "http://10.10.10.24/")
    );
    echo $client->say("hello world");
} catch (SoapFault $fault){
    echo "Error: ",$fault->faultcode,", string: ",$fault->faultstring;
}
?>
二。
服务器端文件server.php:
<?php
$classmap = array();

//注意和实例一 的不同
$soap = new SoapServer(null,array('uri'=>"http://10.10.10.24/", "classmap" => $classmap));
$soap->setClass('Myclass');
$soap->handle();

class Myclass {
    function say($someword){
        return $someword;
    }
}
?>
客 户端  输出的是 xyz world
<?
try {
          $client = new SoapClient(null,
            array('location' =>"http://10.10.10.24/server.php",'uri' => "http://10.10.10.24/")
        );
    var_dump($client);
    echo $client->say("xyz world");
} catch (SoapFault $fault){
        echo "Error: ",$fault->faultcode,", string: ",$fault->faultstring;
}

2. [文件] soapclient.php ~ 1012B     下载(6)     跳至 [1] [2] [3] [全屏预览]

<?php

try{
    //wsdl方式调用web service
    //wsdl方式中由于wsdl文件写定了,如果发生添加删除函数等操作改动,不会反应到wsdl,相对non-wsdl方式
    //来说不够灵活
    //$soap = new SoapClient("http://localhost/Test/MyService/PersonInfo.wsdl");
    
    //non-wsdl方式调用web service    
    //在non-wsdl方式中option location系必须提供的,而服务端的location是选择性的,可以不提供
   // $soap = new SoapClient(null,array('location'=>"http://localhost/webserver/soapserver.php",'uri'=>'http://127.0.0.1/'));
    $soap = new SoapClient(null,array('location'=>"http://localhost/webserver/soapserver.php",'uri'=>'test'));
    //两种调用方式,直接调用方法,和用__soapCall简接调用
    $result1 = $soap->getName();
    $result2 = $soap->__soapCall("getName",array());
    echo $result1."<br/>";
    echo $result2;
    
}catch(SoapFault $e){
    echo $e->getMessage();
}catch(Exception $e){
    echo $e->getMessage();
}





?>

3. [文件] soapserver.php ~ 749B     下载(7)     跳至 [1] [2] [3] [全屏预览]

<?php
Class PersonInfo
{
    /**
     *    返回姓名
     *    @return string 
     *
     */
    public function getName(){
        return "My Name is Chance";
    }
}


 //wsdl方式提供web service,如果生成了wsdl文件则可直接传递到//SoapServer的构造函数中
 //$s = new SoapServer('PersonInfo.wsdl');
 
 //doesn't work 只有location不能提供web service
 //output:looks like we got no XML document
 //$s = new SoapServer(null,array(""=>"http://localhost/Test/MyService/Server.php"));
 
 //下面两种方式均可以工作,只要指定了相应的uri
 //$s = new SoapServer(null,array("uri"=>"http://127.0.0.1/"));
 $s = new SoapServer(null,array("uri"=>"test"));
 $s -> setClass("PersonInfo");
 
 $s -> handle();




?>
精彩图集

赞助商链接