web-services - C# SOAP - 反序列化回复消息正文时出错(Magento API)

标签 web-services magento soap

我正在尝试使用以下代码将 C# 应用程序连接到 Magento 1.6(通过 Magento SOAP V2):

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

我收到以下错误:
Error in deserializing body of reply message for operation 'login'.

我使用 Fiddler 来检查传输,结果如下:
<?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>

我正在使用:
  • Magento V 1.6
  • Magento SOAP V2
  • WS-I 合规性(即系统/配置/服务/Magento 核心 API/WS-I 合规性设置为是)
  • 内容类型修复:Content Type Error Consuming Magento 1.5 Webservices from .Net
  • VS 2010
  • .Net 3.5

  • 有什么想法可以解决(或调试)这个问题吗?

    最佳答案

    这实际上很容易解决。打开您用于连接到 magento 的应用程序的 web.config/app.config

    找到这条线

    <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>
    

    记下绑定(bind)配置和绑定(bind)类型。在上面basicHttpBinding/BasicBinding

    接下来找到以下配置部分。
    <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>
    

    注意这里的嵌套,绑定(bind) -> 绑定(bind)类型 -> 按名称绑定(bind)元素

    当 Visual Studio 生成代理时,它为读者配额提供的默认值等不足以容纳所有数据。就像我在上面的例子中所做的那样简单地增加它们。

    关于web-services - C# SOAP - 反序列化回复消息正文时出错(Magento API),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7996931/

    相关文章:

    JSONMarshal : Is it possible to serialize/desrialize into/from 'plain' JSON (without metadata)?

    Magento 1.9 Rest api 开发人员文档

    .htaccess - magento 和管理页面中的 500 内部服务器错误

    Java-基于 Https 的 SOAP Web 服务

    Android Async Task 一个接一个

    java - 将 jar 作为 web 服务运行?

    c# - 通过网络序列化对象

    php - 使用 PHP 进行 SOAP 身份验证

    java - 无法从 Web 服务返回数组列表

    magento - Redis 关闭了我的 Magento 网站