2

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

    <?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页面在此处输入图像描述


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


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

4

1 回答 1

0

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

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

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

希望有帮助

于 2012-10-15T10:59:09.960 回答