zoukankan      html  css  js  c++  java
  • 利用NuSoap开发WebService(PHP)

     

     

    利用NuSoap开发WebService(PHP)

    分类: php 2010-09-08 12:00 5005人阅读 评论(1) 收藏 举报

    NuSoap是PHP环境下的WebService编程工具,用于创建或调用WebService,是一个开源软件。它完全采用PHP语言编写、通过HTTP收发SOAP消息的一系列PHP类,由NuSphere Corporation(http://www.nusphere.com/)开发。
    它的优势是不需要扩展库的支持,这种特性使它可用于所有的PHP环境,不受服务器安全设置的影响。
    1.首先,去http://sourceforge.net/projects/nusoap/下载nusoap-0.9.5.zip,解压后把lib文件夹放到与你的WebService程序相同的目录,如/WebService/lib。

    2.
    服务端:建立nusoapService.php文件。
    <?php
        require_once("lib/nusoap.php");
        $server = new soap_server;
        //避免乱码
        $server->soap_defencoding = 'UTF-8';
        $server->decode_utf8 = false;
        $server->xml_encoding = 'UTF-8';
        $server->configureWSDL('sayHello');//打开wsdl支持
        /*
           注册需要被客户端访问的程序
           类型对应值:bool->"xsd:boolean"   string->"xsd:string" 
                    int->"xsd:int"    float->"xsd:float"
        */
        $server->register( 'sayHello',    //方法名
        array("name"=>"xsd:string"),    //参数,默认为"xsd:string"
        array("return"=>"xsd:string") );//返回值,默认为"xsd:string"
        //isset 检测变量是否设置
        $HTTP_RAW_POST_DATA = isset($HTTP_RAW_POST_DATA) ? $HTTP_RAW_POST_DATA : '';
        //service 处理客户端输入的数据
        $server->service($HTTP_RAW_POST_DATA);
        /**
         * 供调用的方法
         * @param $name
         */
        function sayHello($name) {
           return "Hello, {$name}!";
        }
    ?>
    注:
          1.文件代码不能有任何输出,否则调用时会报类似如下错误:
                 XML error parsing SOAP payload on line x(行号): Reserved XML Name
          2.要以UTF-8 无BOM格式保存,不然客户端调用会出错。

    3.
    客户端:建立nusoapClient.php文件。
    <?php
        require_once("lib/nusoap.php");
        /*
           通过WSDL调用WebService
           参数1 WSDL文件的地址(问号后的wsdl不能为大写)
           参数2 指定是否使用WSDL 
           $client = new soapclient('http://localhost/WebService/nusoapService.php?wsdl',true);
           */
        $client = new soapclient('http://localhost/WebService/nusoapService.php');
        $client->soap_defencoding = 'UTF-8';
        $client->decode_utf8 = false;
        $client->xml_encoding = 'UTF-8';
        //参数转为数组形式传递
        $paras=array('name'=>'Bruce Lee');
        //目标方法没有参数时,可省略后面的参数
        $result=$client->call('sayHello',$paras);
        //检查错误,获取返回值
        if (!$err=$client->getError()) { echo "返回结果:",$result;  }
        else { echo "调用出错:",$err; }
    ?>
    注:用nusoap实现WebService,不要开启php的SOAP扩展

    http://blog.csdn.net/painstaker/article/details/5870515

  • 相关阅读:
    xcode
    C++中一个井号和两个井号的使用
    未能正确加载“visual C++ package”包
    cocos2dx CCLayer上精灵的点击判断的问题
    Command /Developer/Library/PrivateFrameworks/DevToolsCore.framework/Resources/pbxcp failed with exit code 1
    如何优化cocos2d程序的内存使用和程序大小:第二部分_(转)
    PVR: VFrame attempted to use one of these functions 报错
    网页里加入百度在线音乐播放器
    CCHttpClient发起https请求
    伪装qq空间登录
  • 原文地址:https://www.cnblogs.com/mull/p/4550832.html
Copyright © 2011-2022 走看看