Soap soap-enc: пример массива (C #) - PullRequest
0 голосов
/ 19 января 2019

Мне нужно вызвать веб-сервис 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.

Из онлайн-документов веб-службы:

dataExample

Вызов из 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>
...