zoukankan      html  css  js  c++  java
  • php xmlrpc 第三方工具使用 The Incutio XMLRPC Library for PHP

    xml-rpc 是一种使用HTTP协议传输XML格式文件来获取远程程序调用(Remote Procedure Call)的传输方式。

    The Incutio XML-RPC Library for PHP   xml-rpc第三方工具,官网http://scripts.incutio.com/xmlrpc/,参考手册:http://scripts.incutio.com/xmlrpc/manual.php

    到官网下载最新版本,就是一个IXR_Library.php文件。

    使用方法:

    1、创建一个客户端:如 testClient.php

    <?php
    //引入第三方类库。
    require_once dirname(__FILE__)."/IXR_Library.php";
    //服务端地址。
    $server_url = "http://localhost/heping.com/xmlrpc/testServer.php";
    //创建客户端对象。
    $client = new IXR_Client($server_url);
    //debug 调试用,打印出请求和返回结果的详细xml结构。
    $client->debug = true;
    //请求服务端test.add方法,后两个为方法的参数。服务端的方法在服务端(testServer.php)中实现。
    if (!$client->query('test.add', 3, 4)) {
        //产生错误 ,取出错误编号和错误信息。
        die('Something went wrong - '.$client->getErrorCode().' : '.$client->getErrorMessage());
    } else {
        //输出服务商响应结果。
        echo $client->getResponse();
    }
    echo "<br>";
    //请求服务端不带参数的方法。
    if (!$client->query('test.sayHello')) {
        die('Something went wrong - '.$client->getErrorCode().' : '.$client->getErrorMessage());
    } else {
        echo $client->getResponse();
    }

    使用debug可以打印出请求和响应的原始数据,如:test.add 的请求数据如下:我们不用去关心这部分数据格式问题,IXR_Client类进行了处理。

    POST /heping.com/xmlrpc/testServer.php HTTP/1.0
    Host: localhost
    Content-Type: text/xml
    User-Agent: The Incutio XML-RPC PHP Library
    Content-Length: 186
    
    <?xml version="1.0"?>
    <methodCall>
    <methodName>test.add</methodName>
    <params>
    <param><value><int>3</int></value></param>
    <param><value><int>4</int></value></param>
    </params></methodCall>

    响应数据如下:$client->getResponse() 方法将下面的结果转换成我们习惯用的数据格式。如字符串或数组。

    HTTP/1.1 200 OK
    Date: Mon, 10 Dec 2012 06:40:42 GMT
    Server: Apache/2.2.17 (Win32) PHP/5.3.3
    X-Powered-By: PHP/5.3.3
    Connection: close
    Content-Length: 153
    Content-Type: text/xml
    
    <?xml version="1.0"?>
    <methodResponse>
      <params>
        <param>
          <value>
          <int>7</int>
          </value>
        </param>
      </params>
    </methodResponse>

    2、创建服务端程序,testServer.php

    <?php
    include dirname(__FILE__)."/IXR_Library.php";
    
    //方法实现
    function sayHello($args) {
        return 'Hello!';
    }
    function addTwoNumbers($args) {
        $number1 = $args[0];
        $number2 = $args[1];
        return $number1 + $number2;
    }
    //将方法绑定的服务端类里,客户端可直接通过$client->query('test.sayHello');调用到sayHello方法。
    $server = new IXR_Server(array(
        'test.sayHello' => 'sayHello',
        'test.add' => 'addTwoNumbers'
    ));
  • 相关阅读:
    吴裕雄 python 机器学习——集成学习AdaBoost算法回归模型
    吴裕雄 python 机器学习——集成学习AdaBoost算法分类模型
    吴裕雄 python 机器学习——半监督学习LabelSpreading模型
    吴裕雄 python 机器学习——半监督学习标准迭代式标记传播算法LabelPropagation模型
    吴裕雄 python 机器学习——人工神经网络感知机学习算法的应用
    【2017"百度之星"程序设计大赛
    【Uva 1289】Stacking Plates
    【Uva 12093】Protecting Zonk
    【Uva 1633】Dyslexic Gollum
    【2017 Multi-University Training Contest
  • 原文地址:https://www.cnblogs.com/wuheping/p/2811394.html
Copyright © 2011-2022 走看看