magento soap api v2 catalogProductInfo“产品不存在”错误

时间:2014-05-08 15:08:00

标签: xml http magento soap

尝试使用v2 API从magento获取产品信息时,我遇到了一个有点着名的“产品不存在”错误。但是,通常的补救办法似乎都没有效果。例如,我检查了这个帖子:magento soap api v2 catalogProductInfo not working

这是我的请求数据:

<?xml version="1.0" encoding="utf-8"?>
<SOAP-ENV:Envelope 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:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
  <SOAP-ENV:Body>
    <ns1:catalogProductInfo>
      <sessionId xsi:type="xsd:string">291b294f0a5ec652069dfbd2ba1f42a3</sessionId>
      <productId xsi:type="xsd:string">917</productId>
    </ns1:catalogProductInfo>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

这是我到目前为止所尝试的内容:

  • 验证并重新生成会话ID
  • 用户的完全访问权限
  • 多个产品ID(已验证存在,包括admin和使用catalogProductList)
  • 同时使用ID和SKU
  • SKU背后有空间
  • 添加&lt; storeView&gt;参数
  • 添加&lt; productIdentifierType&gt;参数
  • 以上的组合

下一步是什么?

3 个答案:

答案 0 :(得分:4)

我找到了一个解决方案:事实证明http://www.magentocommerce.com/api/soap/catalog/catalogProduct/catalog_product.info.html上的magento文档是错误的。参数“productId”实际上称为“product”。所以我的工作代码是:

<?xml version="1.0" encoding="utf-8"?>
<SOAP-ENV:Envelope 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:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
  <SOAP-ENV:Body>
    <ns1:catalogProductInfo>
      <sessionId xsi:type="xsd:string">291b294f0a5ec652069dfbd2ba1f42a3</sessionId>
      <product xsi:type="xsd:string">917</product>
    </ns1:catalogProductInfo>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

我在哪里报告文档中的错误?

答案 1 :(得分:2)

我正在使用C#和SOAP访问magento API。

我遇到同样的问题(产品不存在),我的解决方案是将最后一个参数productIdentifierType保留为null或{{1} }。

""

details = service.catalogProductInfo(sessionId, prod.sku, null, null, "");

文档似乎说你应该把&#34; sku&#34;或&#34; product_id&#34; (或者&#34;产品&#34;正如我见过其他人所说的那样),但这对我不起作用。

您可以使用details = service.catalogProductInfo(sessionId, prod.product_id, null, null, ""); sku作为第二个参数。

sku之后的空间(正如其他人所建议的那样)不是必需的。

答案 2 :(得分:0)

我有同样的问题,在我的情况下,这是由于Magento的更新从1.7到1.9。他们更改了catalogProductInfo的WSDL(以及其他更改)。我使用自动生成的C#代码访问API,我必须更新它(在Visual Studio中:右键单击API和“更新服务引用”)。

(这通常不值得回答,除非你没有得到服务器升级的通知,你可以在了解发生的事情之前搜索一下,所以我希望这可以帮助其他人)