【问题标题】:NuSoap returns complexType array not correct?NuSoap 返回 complexType 数组不正确?
【发布时间】:2012-11-23 12:24:37
【问题描述】:

我有一个带有 NuSoap 的 Web 服务 WSDL。我将它与 CodeIgniter 一起使用。我遇到了 contexttype-array 返回的问题。这是我的 PHP 代码:

$this->nusoap_server->wsdl->addComplexType(
                    "getJobStatusByIdsResponse",
                    "complexType",
                    "array",
                    "all",
                    "SOAP-ENC:Array",
                    array(),
                    array(
                        'Job' => array('ref'=>'SOAP-ENC:arrayType','wsdl:arrayType'=>'tns:jobStatusResponse[]', 'minOccurs'=>'1', 'maxOccurs'=>'unbounded')
                    ),
                    'tns:jobStatusResponse'
                );


$this->nusoap_server->wsdl->addComplexType(
                    "getJobStatusByIdsResponse",
                    "complexType",
                    "array",
                    "all",
                    "SOAP-ENC:Array",
                    array(),
                    array(
                        'Job' => array('ref'=>'SOAP-ENC:arrayType','wsdl:arrayType'=>'tns:jobStatusResponse[]', 'minOccurs'=>'1', 'maxOccurs'=>'unbounded')
                    ),
                    'tns:jobStatusResponse'
                );

$this->nusoap_server->register(
                    "getJobStatusByIds",
                    array('getJobStatusByIdsRequest' => 'tns:getJobStatusByIdsRequest'),
                    array('getJobStatusByIdsResponse' => 'tns:getJobStatusByIdsResponse'),
                    false,
                    false,
                    "rpc",
                    "literal",
                    "get JobStatus By Ids"
);

function getJobStatusByIds($data) {
  return array(array('orderId' => '1000', 'jobStatus' => '5'),array('orderId' => '1001', 'jobStatus' => '3'),array('orderId' => '1002', 'jobStatus' => '7'))
}

我得到这个作为回报:

      <ns1:getJobStatusByIdsResponse xmlns:ns1="http://schemas.xmlsoap.org/soap/envelope/">
         <getJobStatusByIdsResponse>
            <item>
               <orderId>1001</orderId>
               <jobStatus>5</jobStatus>
            </item>
            <item>
               <orderId>1002</orderId>
               <jobStatus>3</jobStatus>
            </item>
            <item>
               <orderId>1003</orderId>
               <jobStatus>7</jobStatus>
            </item>
         </getJobStatusByIdsResponse>
      </ns1:getJobStatusByIdsResponse>

这不对吧?

我怎样才能得到它('Job'而不是'item'):

  <ns1:getJobStatusByIdsResponse xmlns:ns1="http://schemas.xmlsoap.org/soap/envelope/">
     <getJobStatusByIdsResponse>
        <Job>
           <orderId>1001</orderId>
           <jobStatus>5</jobStatus>
        </Job>
        <Job>
           <orderId>1002</orderId>
           <jobStatus>3</jobStatus>
        </Job>
        <Job>
           <orderId>1003</orderId>
           <jobStatus>7</jobStatus>
        </Job>
     </getJobStatusByIdsResponse>
  </ns1:getJobStatusByIdsResponse>

我可以帮助谁? 在哪里可以找到更多 NuSoap 示例?

【问题讨论】:

    标签: php web-services wsdl nusoap complextype


    【解决方案1】:

    希望这会有所帮助。

    添加了代码 cmets 以帮助那些无法记住 NuSoap 参数的人。

    $this->nusoap_server->register(
                        "getJobStatusByIds",                                                           // method name
                        array('getJobStatusByIdsRequest' => 'tns:getJobStatusByIdsRequest'),           // input params
                        array('getJobStatusByIdsResponse' => 'tns:getJobStatusByIdsResponse'),         // output params
                        false,                                                                         // namespace
                        false,                                                                         // soap action
                        "rpc",                                                                         // style
                        "literal",                                                                     // use
                        "get JobStatus By Ids"                                                         // documentation
    );
    

    我认为定义的响应应该是这样的。

    // Job Status Result Complex Type (output)
    $this->nusoap_server->wsdl->addComplexType(
                            "getJobStatusByIdsResponse",
                            "complexType",
                            "struct",
                            "all",
                            "SOAP-ENC:Array",
                            array('Job' => array('orderId' => 'your value here', jobStatus => 'your value here')),
        );
    

    【讨论】:

      猜你喜欢
      • 2017-04-26
      • 2011-10-03
      • 2016-03-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-07
      相关资源
      最近更新 更多