Мне нужно вызвать веб-сервис PHP Soap в C #.У меня есть WSDL, но основные части входных данных набираются как soap: enc: Array , в результате чего object [] :
отрывки из WSDL для add_address:
<operation name="add_address">
<documentation>
Add's a new Address with the data provided in an array.
</documentation>
<input message="tns:add_addressIn"/>
<output message="tns:add_addressOut"/>
</operation>
<message name="add_addressIn">
<part name="data" type="soap-enc:Array"/>
<part name="token" type="xsd:string"/>
</message>
<message name="add_addressOut">
<part name="return" type="soap-enc:Array"/>
</message>
Импорт WSDL в качестве ссылки в Visual Studio приводит к типу object [] для параметра data в функции add_Address.
Из онлайн-документов веб-службы:
Вызов из PHP (также согласно их документам):
data = Array
(
[company_name] => MDS Collivery
[building] => MDS House
[street] => 58c Webber St
[location_type] => 5
[suburb_id] => 1936
[town_id] => 147
[custom_id] => AF65549
[full_name] => Bernhard Breytenbach
[phone] => 0123456789
[cellphone] => 0834567912
[email] => name@domain.co.za
)
add_address(data, '4M8wJGBXC6KKpT0')
Я пробовал использовать словарь в C #, но это приводит к проблемам с сериализацией.
Импорт WSDL в SoapUI приводит к:
<soapenv:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:v2="https://www.collivery.co.za/ws/v2">
<soapenv:Header/>
<soapenv:Body>
<v2:add_contact soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<data xsi:type="soapenc:Array" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">
<!--You may enter ANY elements at this point-->
</data>
<token xsi:type="xsd:string">?</token>
</v2:add_contact>
</soapenv:Body>
</soapenv:Envelope>
Я написал свой собственный клиент для сборкиМыльный конверт.это работает для всех строго типизированных операций, но я не знаю, как создать элементы для soap-enc: Array
Может кто-нибудь, пожалуйста, помогите с примером того, что поставитьвнутри элемента:
<data xsi:type="soapenc:Array" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">
<!--You may enter ANY elements at this point-->
</data>