Сложный массив Как:
$id = "value"; $customer = array("key" => "value", "key" => "value"); $set = $soap->call($sessionID, 'abc.set', array($id, $customer));
Как отправить форму запроса андроида с этим типом сложного массива в мыло.
Я использую библиотеку ksoap2
для отправки запроса в магнитовое мыло.
В SoapUi Software форматирование вызова такого типа сложного массива, как:
<SOAP-ENV:Envelope SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="urn:Magento" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ns2="http://xml.apache.org/xml-soap" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"> <SOAP-ENV:Body> <call> <sessionId xsi:type="xsd:string">??</sessionId> <resourcePath xsi:type="xsd:string">abc.set</resourcePath> <args xsi:type="SOAP-ENC:Array"> <item xsi:type="xsd:int">id</item> <item xsi:type="ns2:Map"> <item> <key xsi:type="xsd:string">key</key> <value xsi:type="xsd:string">value</value> </item> <item> <key xsi:type="xsd:string">key</key> <value xsi:type="xsd:string">value</value> </item> <item> <key xsi:type="xsd:string">key</key> <value xsi:type="xsd:string">value</value> </item> </item> </args> </call> </SOAP-ENV:Body> </SOAP-ENV:Envelope>
Шаг 1: В ksoap или ksoap2 нет прямой поддержки отправки массива. поэтому вы можете создать SoapObject с именем метода (который вам нужно создать массив)
SoapObject object= new SoapObject(NAMESPACE,"shoppingCartProductEntity"); object.addProperty("product_id","886"); object.addProperty("sku","ABC 456-Black-10"); and more parameters.....
Шаг 2: затем создайте метод arrayType (необязательно зависит от вашего WSDL) и добавьте этот soapObject к этому массиву Object как свойство
SoapObject EntityArray = new SoapObject(NAMESPACE, "shoppingCartProductEntityArray"); EntityArray.addProperty("products",object);
Шаг 3: наконец, добавьте массив к основному мыльному вызову
SoapObject request = new SoapObject(NAMESPACE,"shoppingCartProductAdd"); request.addProperty("sessionId", sessionId); request.addProperty("quoteId", cartId); request.addProperty("products",EntityArray); //ADDING ARRAY HERE AS A PEOPERTY env.setOutputSoapObject(request); androidHttpTransport.call(NAMESPACE +"/shoppingCartProductAdd ", env); resultSoap = env.getResponse();
ПРИМЕЧАНИЕ. Шаги варьируются в зависимости от вашего WSDL, иногда вы можете напрямую добавлять объект 1-го шага в качестве параметра, это зависит от WSDL.