1

希望这里有人熟悉 OpenCart。我在 OpenCart 上的 Nusoap 实现有问题。这是我的实现

  1. 我创建了一个名为 ws.php 的新库文件(我在 system/library/ 中有整个 nusoap 文件夹)
<?php
final class Ws {

      public function __construct() {

          require_once('nusoap/nusoap.php');

  }

}
?>
  1. 我在目录/控制器/webservice/ws.php 中创建了一个控制器文件
<?php
class ControllerWebserviceWs extends Controller {
  private $error = array(); 

  function __construct($registry) {

      parent::__construct($registry);

      $this->load->library('ws');
      $ws = new Ws();

          $this->nusoap_server = new soap_server();
        $this->nusoap_server->configureWSDL("MemberWSDL",

"urn:MemberWSDL"); $this->nusoap_server->register("selectMemberInfo", array("id" => "xsd:int", ), array("return"=>"xsd:string"), "urn:MemberWSDL", "urn :MemberWSDL#selectMemberInfo", "rpc", "encoded", "获取会员信息"); }

  function index(){

      $this->nusoap_server->service(file_get_contents("php://input"));

  }

  function select_member_info() {
        function selectMemberInfo($member_id) {
          return 'hello';
        }

$this->nusoap_server->service(file_get_contents("php://input")); } } ?>

  1. 这是我的肥皂客户端驻留在 OpenCart 之外的应用程序上

$nusoap_client=new nusoap_client("http://localhost/opencart/index.php?route=webservice/ws"); $id = 90001; if($nusoap_client->fault) { $text = '错误:'.$nusoap_client->fault;

    }
    else
    {
        if ($nusoap_client->getError())
        {
            $text = 'Error: '.$nusoap_client->getError();
        }
        else
        {
          $row = $nusoap_client->call(
                'selectMemberInfo',
                array($id),
                'urn:MemberWSDL',
                'urn:MemberWSDL#selectMemberInfo'
            );
            echo

'

'.htmlspecialchars($nusoap_client->response,
ENT_QUOTES)。
'; } }

?>

这就是我得到的

HTTP/1.1 500 内部服务器错误服务器:Microsoft-IIS/5.1 日期:星期二,2011 年 10 月 4 日 04:47:41 GMT 内容类型:text/xml;charset=ISO-8859-1 X-Powered-By: PHP/5.3.1 Set-Cookie: PHPSESSID=fas5fisb84rcs3g94njljhrhk4; path=/ Expires: Thu, 19 Nov 1981 08:52:00 GMT Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0 Pragma: no-cache Set-饼干:语言=en;过期=周四,2011 年 11 月 3 日 04:47:41 GMT;路径=/; 域 = 本地主机设置 Cookie:货币 = MYR;过期=周四,2011 年 11 月 3 日 04:47:41 GMT;路径=/; 域 = localhost 服务器:NuSOAP 服务器 v0.7.3 X-SOAP 服务器:NuSOAP/0.7.3 (1.114) 内容长度:692

xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http:// www.w3.org/2001/XMLSchema-instance"
xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"> SOAP-ENV:Clientmethod 'selectMemberInfo' 未在服务中定义

有没有人尝试在 OpenCart 中实现 Nusoap/SOAP,或者知道我的实现出了什么问题?

提前致谢。

4

1 回答 1

0

我也有同样的问题。但我意识到,如果你把主课放在select_member_info()外面,它就起作用了!

一旦我得到一个可行的解决方案,我会再次写信。

于 2012-06-08T14:35:37.163 回答