-->

用的NuSOAP复杂类型(complexType with nuSoap)

2019-10-30 11:49发布

我有这样的WDSL

<xsd:element name="elementname">
    <xsd:complexType>
      <xsd:sequence>
        <xsd:element maxOccurs="1" minOccurs="1" ref="miref"/>
      </xsd:sequence>
    </xsd:complexType>
  </xsd:element>

现在我已经通过的NuSOAP创建,但我不能找到反正省略对复杂类型德类型和名称,并设置元素的内部的复杂类型。

所以,如果我要创造我使用此代码的元素:

$server->wsdl->AddElement(  
        array('name' => 'example1', 'type' => ''
        )
); 

如果我想创建一个复杂类型这个其他:

$server->wsdl->addComplexType(
    'example2',
    'complexType',
    'struct',
    'all',
    '',
    array(
        'id_user' => array('type' => '', 'maxOccurs' => '1', 'minOccurs' => '1'),
    )
);   

所以这是我的问题:1]我需要把那个复杂类型(例2)其他元素(例1)的内部。 2]复杂类型不应该有他的标签,但功能addComplexType()和的addElement()里面的名字,不到风度似乎如果我不给他们的类型和名称的工作。 另外,文档中的典型代表是它的需要:属性必须包括名称和类型。

Answer 1:

我不熟悉的NuSOAP,但因为它是基于原生PHP SoapServer时,我asuming是相似的。

Basicly用PHP方法工作时,SoapServer时将根据所附的XML Schema(XSD)解析返回的对象。

每当你与复杂类型的工作,你应该有相应的定义的PHP类。 一个StdClass将工作过,但它显然更好地定义结构。

$response = new stdClass();
$response->sequenceElement = 'value';
return $response;

显然,sequenceElement名称必须你指的(REF =“miref”)XSD类相匹配。

此外,如果添加额外的数据到您的$回应,它将被SoapServer的忽略,因为它不是在XSD定义。



文章来源: complexType with nuSoap