respuesta reply para operaciĆ³n mensaje for error deserializing deserializar cuerpo body web-services magento soap

web services - reply - C#SOAP-Error al deserializar el cuerpo del mensaje de respuesta(API de Magento)



error al deserializar el cuerpo del mensaje de respuesta para la operaciĆ³n c# (3)

Estoy intentando conectar una aplicación C # a Magento 1.6 (a través de Magento SOAP V2) usando el siguiente código:

using (Mage_Api_Model_Server_Wsi_HandlerPortTypeClient proxy = new Mage_Api_Model_Server_Wsi_HandlerPortTypeClient()) { string sessionId = proxy.login("XXXXXXX", "XXXXXXXXXXX"); Console.WriteLine(sessionId); }

y me sale el siguiente error:

Error in deserializing body of reply message for operation ''login''.

Usé Fiddler para inspeccionar la transferencia y este es el resultado:

<?xml version="1.0" encoding="UTF-8"?> <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="urn:Magento"> <SOAP-ENV:Body> <ns1:loginResponseParam> <result>fc094df96480dbbcdXXXXXXXXXXXXXXX</result> </ns1:loginResponseParam> </SOAP-ENV:Body> </SOAP-ENV:Envelope>

Estoy usando:

¿Alguna idea de cómo puedo solucionar (o corregir) este problema?


No estoy familiarizado con todo el paquete de desarrollo de "Servicios web == Soap == WS- *", pero sí sé que Magento 1.6 introdujo algo llamado "Conformidad WS-I" para su API. Necesita usar la URL de jabón V2, y también configurar

System -> Configuration -> Magento Core Api -> General Settings -> WS-I Compliance

a "Sí" (en el administrador del sistema Magento). Esto le indicará a Magento que use el manejador soap_wsi lugar del manejador soap_v2 . Puede ver el controlador que maneja las solicitudes de Jabón de Magento en

app/code/core/Mage/Api/controllers/V2/SoapController.php

No tengo idea si esto te ayudará, pero incluiste

  • Conformidad WS-I

y las palabras coinciden, por lo que hay una posibilidad de que esto ayude.


esto es bastante fácil de arreglar. Abra el archivo web.config / app.config para la aplicación que está utilizando para conectarse a magento

encuentra esta linea

<client> <endpoint address="http://YourWeb.com/index.php/api/v2_soap/index/" binding="basicHttpBinding" bindingConfiguration="BasicBinding" contract="Webstore.Mage_Api_Model_Server_Wsi_HandlerPortType" name="Mage_Api_Model_Server_Wsi_HandlerPort" /> </client>

Anote la configuración de enlace y el tipo de enlace. En el enlace básico anteriorHttpBinding / BasicBinding

A continuación, busque la siguiente sección de configuración.

<bindings> <basicHttpBinding> <binding name="BasicBinding" closeTimeout="00:01:00" openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00" allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard" maxBufferSize="999999" maxBufferPoolSize="999999" maxReceivedMessageSize="999999" messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered" useDefaultWebProxy="true"> <readerQuotas maxDepth="999999" maxStringContentLength="999999" maxArrayLength="999999" maxBytesPerRead="999999" maxNameTableCharCount="999999" /> <security mode="None" /> </binding> </basicHttpBinding> </bindings>

Observe la anidación aquí, vinculante -> tipo de enlace -> elemento de enlace por nombre

Cuando Visual Studio genera el proxy, los valores predeterminados que otorga para la cuota del lector no son lo suficientemente grandes como para contener todos los datos. Simplemente increméntelos como lo hice en el ejemplo anterior.


Intenté todas las respuestas anteriores pero no resolvió mi problema, en mi caso particular descubrí que se trataba de miembros de datos con el tipo de problema de creación de fecha y hora. Anteriormente estaba configurando Data como

2015-07-21T13: 55: 30.5962405 + 05: 30 -> No funciona

luego lo cambió a
2015-03-29T09: 30: 47 -> Trabajando

Algunos cómo la fecha no fue capaz de serializar