Member 14156649 Ответов: 0

Как решить проблемы интеграции 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 код. Поскольку вы не поделились с нами никакими деталями этого кода, мы не можем сказать вам, в чем заключается проблема.

0 Ответов