Как решить проблемы интеграции C # и PHP
Когда я делаю пост в Magento на PHP со следующим кодом:
<?php $options = array( 'cache_wsdl' => 0, 'trace' => 1, 'stream_context' => stream_context_create(array( 'ssl' => array( 'verify_peer' => false, 'verify_peer_name' => false, 'allow_self_signed' => true ) ))); //Url de la conexión try { $client = new SoapClient("https://prevs.vinoseleccion.com/api/soap/?wsdl=1", $options); $session = $client->login("******", "*****"); $filter = array( "email" => "carlosbote+2@gmail.com" );//Listado de clientes filtrado $customers = $client->call($session, "customer.list", array($filter));//Impresión print_r($customers);//Logout $client->endSession($session); } catch (SoapFault $e) { var_dump($e->getMessage()); } ?>
Я получаю XML-файл:
<?xml version="1.0" encoding="UTF-8"?> <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:ns1="urn:Magento" xmlns:ns2="http://xml.apache.org/xml-soap" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> <SOAP-ENV:Body> <ns1:call> <sessionId xsi:type="xsd:string">2ed9fd8688a6b4fb2c117b9175bf8fa6</sessionId> <resourcePath xsi:type="xsd:string">customer.list</resourcePath> <args SOAP-ENC:arrayType="ns2:Map[1]" xsi:type="SOAP-ENC:Array"> <item xsi:type="ns2:Map"> <item> <key xsi:type="xsd:string">email</key> <value xsi:type="xsd:string">carlosbote+2@gmail.com</value> </item> </item> </args> </ns1:call> </SOAP-ENV:Body> </SOAP-ENV:Envelope>
Что я уже пробовал:
Когда я делаю что-то подобное в C#:
filter= new string[] { "email", "SERGIOBERTOG@GMAIL.COM" }; var result = ObjMag.call(IdSesion, "customer.list", filer);
Я получаю этот сломанный XML:
<?xml version="1.0" encoding="UTF-8"?> <s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"> \ <s:Body xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> \ <q1:call xmlns:q1="urn:Magento"> \ <sessionId xsi:type="xsd:string">5b8da695b73b814099750c409d49a2d1\</sessionId> \ <resourcePath xsi:type="xsd:string">customer.list\</resourcePath> \ <args href="#id1" /> \ </q1:call> \ <q2:Array xmlns:q2="http://schemas.xmlsoap.org/soap/encoding/" id="id1" q2:arrayType="xsd:string[2]"> \ <Item>email\</Item> \ <Item>SERGIOBERTOG@GMAIL.COM\</Item> \ </q2:Array> \ </s:Body> \ </s:Envelope>
Sandeep Mewara
Похоже, вы делаете какой-то сервисный вызов в C#. Как ты это делаешь? Используйте "улучшить вопрос" и обновите его.
Garth J Lancaster
Я надеюсь, что отсутствующая буква "Т" - это просто типографская ошибка во второй из этих двух строк (то есть "файлер" должен быть "фильтром")
``` filter = new string[] { "email", "SERGIOBERTOG@GMAIL.COM" }; var result = ObjMag.call(IdSesion, "customer.list", filer);```
Richard Deeming
Очевидно, что в ваших словах есть ошибка. ObjMag.call
код. Поскольку вы не поделились с нами никакими деталями этого кода, мы не можем сказать вам, в чем заключается проблема.