Krzysztof Białkowski

Krzysztof Białkowski Software Developer
(C# .NET)

Temat: [WebService/Wsdl]Problem z mapowaniem ComplexType

Witam!
Mam problem z mapowaniem wsdl'a
Posiadam zlozony typ postaci:


<xsd:complexType name="WartoscList">
<xsd:sequence>
<xsd:element name="rozmiar" type="xsd:int"></xsd:element>
<xsd:element name="list" type="tns:Wartosc" maxOccurs="unbounded" minOccurs="0"></xsd:element>
</xsd:sequence>
</xsd:complexType>


<xsd:complexType name="Wartosc">
<xsd:sequence>
<xsd:element name="nazwa" type="xsd:string"></xsd:element>
<xsd:element name="nazwa2" type="xsd:string"></xsd:element>
<xsd:choice>
<xsd:element name="_str_" type="xsd:string"></xsd:element>
<xsd:element name="_int_" type="xsd:int"></xsd:element>
</xsd:choice>
</xsd:sequence>
</xsd:complexType>



<wsdl:message name="nowaMetoda">
<wsdl:part name="seqId" type="xsd:int" />
<wsdl:part name="wartosci" type="tns:WartoscList"></wsdl:part>
</wsdl:message>


Pytanie brzmi jak postronie servera obsluzyc ten obiekt list.
O ile z dostaniem się do pola rozmiar nie ma problemu, tak nie potrafię zamapować drugiego pola list i przeczytać któregos z elementow (nazwa,nazwa2 etc)


function nowaMetoda($seqId,$wartosci){

$rozmiar = $wartosci->rozmiar;


}
Marcin Molga

Marcin Molga Senior Solution
Architect, IBM.

Temat: [WebService/Wsdl]Problem z mapowaniem ComplexType

Pytanie brzmi jak postronie servera obsluzyc ten obiekt list.

Za mało szczegółów. Czego używasz jako serwera? Zend_Soap_Server? WSO2? Własna implementacja? Dostajesz jakiś błąd? Jaki?

Zend_Soap_Server wymaga opisania typów parametrów publikowanych metod w formacie phpDoc: http://framework.zend.com/manual/en/zend.soap.server.html. Przykład:

class MyClass {
/**
* @param integer $inputParam
* @return string
*/
public function webMethod($inputParam) {
...
}


Oczywiście parametry mogą być obiektami pewnych klas - wtedy te klasy też muszą być opisane w phpDocu.

Możesz użyć zewnętrznego narzędzia (WebService Explorer w Eclipse, SOAP UI) - podasz endpoint url metody, narzędzie poda ci oczekiwane typy danych.

Pozdrawiam.

Temat: [WebService/Wsdl]Problem z mapowaniem ComplexType

Może się mylę, ale tak na oko to:

$wartosci->list->nazwa;

ewentualnie:

$wartosci->list[$x]->nazwa;

Następna dyskusja:

Problem z wsdl i SOAP




Wyślij zaproszenie do