opencart中的Web服务

时间:2012-07-26 08:09:36

标签: php web-services opencart nusoap

我正在尝试在opencart中创建nusoap webservice。为此我下载了nusoap库并将其复制到system / library / lib中,然后我在checkout模块中创建了一个控制器类,如下所示

    <?php
    class ControllerCheckoutCamero extends Controller { 
      public function index() {
               //require_once('lib/nusoap.php');
              $this->load->library('lib/nusoap');


    // Create the server instance
    $server = new soap_server();
    // Initialize WSDL support
    $server->configureWSDL('hellowsdl', 'urn:hellowsdl');

    // Register the method to expose
    $server->register('hello',                // method name
        array('name' => 'xsd:string'),        // input parameters
        array('return' => 'xsd:string'),      // output parameters
        'urn:hellowsdl',                      // namespace
        'urn:hellowsdl#hello',                // soapaction
        'rpc',                                // style
        'encoded',                            // use
        'Says hello to the caller'            // documentation
    );
    // Define the method as a PHP function
    function hello($name) {
            return 'Hello, ' . $name;
    }
    // Use the request to (try to) invoke the service
    $HTTP_RAW_POST_DATA = isset($HTTP_RAW_POST_DATA) ? $HTTP_RAW_POST_DATA : '';
    $server->service($HTTP_RAW_POST_DATA);     



            }
    }
    ?>

然后我通过访问localhost / myopencart / index.php检查了我的控制器?route = checkout / camero


我得到nusoap默认的webservice页面,如enter image description here


但是当我点击该页面上的WSDL链接时,我被重定向到opnecart主页


我认为opencart路由器会出现这个问题,但我不知道如何处理它,我刚刚开始探索opencart。我找到了类似的问题here,但我找不到合适的答案。任何人都可以给出一些建议。提前致谢

1 个答案:

答案 0 :(得分:0)

我认为你的代码是正确的。 我自己尝试了,如果你去localhost / myopencart / index.php它应该工作吗?route = checkout / camero&amp; wsdl

nusoap代码将使用PHP_SELF,因此不会为您的服务提供完整的URL。

此外,在对客户端进行编码时,请使用$ client = new nusoap_client('http://localhost/myopencart/index.php?route = checkout / camero&amp; wsdl',true); ...

希望有帮助