Я хочу позвонить в веб-службу, в которой у меня есть только файл WSDL. Я перечислю важные биты из файла WSDL с контекстно-зависимыми именами, замененными общими:
Функция, которую я хочу вызвать:
<wsdl:operation name="myFunction">
<wsdl:input message="ns:myFunctionRequest" wsaw:Action="urn:myFunction"/>
<wsdl:output message="ns:myFunctionResponse" wsaw:Action="urn:myFunctionResponse"/>
</wsdl:operation>
Описание функции:
<xs:element name="myFunction">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" name="param0" nillable="true" type="xs:string"/>
<xs:element minOccurs="0" name="param1" nillable="true" type="somens:MyType"/>
<xs:element minOccurs="0" name="param2" nillable="true" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
Описание 'MyType':
<xs:complexType name="MyType">
<xs:sequence>
<xs:element minOccurs="0" name="date1" nillable="true" type="xs:dateTime"/>
<xs:element minOccurs="0" name="date2" nillable="true" type="xs:dateTime"/>
<xs:element minOccurs="0" name="string1" nillable="true" type="xs:string"/>
<xs:element minOccurs="0" name="int1" nillable="true" type="xs:int"/>
<xs:element minOccurs="0" name="int2" nillable="true" type="xs:int"/>
</xs:sequence>
</xs:complexType>
Я думаю, что мой PHP-код выглядит примерно так:
$client = new SOAPClient('my soap URL');
$result = $client->setState(array('param0'=>'bla', 'param1'=><undecided>, 'param2'=>'bla');
Моя проблема в том, что поставить в нерешенную часть. Должен ли это быть массив, который отображает имена в сложном типе в значения? Или это должен быть класс, который я определяю с помощью поля соответствующих типов? У меня нет хороших испытательных площадок, чтобы испытать это в данный момент, и я хотел бы иметь возможность двигаться дальше, прежде чем я получу его в наличии.
Я видел много вопросов, связанных с SOAP, без ответа, поэтому я надеюсь, что мне повезет :). Если мне случится узнать себя, я, конечно, поделюсь своими результатами.
Заранее спасибо!