LSt*_*ike 3 xml soap web-services magento
我想通过Web服务请求(soap v2)在Magento中创建类别.我使用Magento 1.4.2.0,正如我所说的magent的肥皂api v2.
如果我发送请求,我会收到以下错误作为响应:
<?xml version="1.0" encoding="UTF-8" ?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Body>
<SOAP-ENV:Fault>
<faultcode>103</faultcode>
<faultstring>Attribute "include_in_menu" is required.</faultstring>
</SOAP-ENV:Fault>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Run Code Online (Sandbox Code Playgroud)
问题是,请求中没有xml标记"include_in_menu".如果我手动添加此标记,它将被忽略.
如果我不想使用soap v.1,我该怎么办?
问候LStrike
PS:这是我的要求:
<?xml version="1.0" encoding="UTF-8"?><?xe.source ../../../Common/Data/login_response.xml#Envelope?><xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="xml" media-type="text/xml"></xsl:output>
<xsl:template match="/">
<soapenv:Envelope xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:urn="urn:Magento" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Header></soapenv:Header>
<soapenv:Body>
<urn:catalogCategoryCreate soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<sessionId xsi:type="xsd:string">
<xsl:value-of select="soapenv:Envelope/soapenv:Body/urn:loginResponse/loginReturn"></xsl:value-of>
</sessionId>
<parentId xsi:type="xsd:int">
<xsl:value-of select="'3'"></xsl:value-of>
</parentId>
<categoryData xsi:type="urn:catalogCategoryEntityCreate">
<!--You may enter the following 19 items in any order-->
<!--Optional:-->
<name xsi:type="xsd:string">
<xsl:value-of select="'TestKategorie'"></xsl:value-of>
</name>
<!--Optional:-->
<is_active xsi:type="xsd:int">
<xsl:value-of select="'1'"></xsl:value-of>
</is_active>
<!--Optional:-->
<position xsi:type="xsd:int"></position>
<!--Optional:-->
<available_sort_by soapenc:arrayType="xsd:string[2]" xsi:type="ns1:ArrayOfString">
<item xsi:type="xsd:string">name</item>
<item xsi:type="xsd:string">price</item>
</available_sort_by>
<!--Optional:-->
<custom_design xsi:type="xsd:string"></custom_design>
<!--Optional:-->
<custom_design_apply xsi:type="xsd:int"></custom_design_apply>
<!--Optional:-->
<custom_design_from xsi:type="xsd:string"></custom_design_from>
<!--Optional:-->
<custom_design_to xsi:type="xsd:string"></custom_design_to>
<!--Optional:-->
<custom_layout_update xsi:type="xsd:string"></custom_layout_update>
<!--Optional:-->
<default_sort_by xsi:type="xsd:string"><xsl:value-of>name</xsl:value-of></default_sort_by>
<!--Optional:-->
<description xsi:type="xsd:string"></description>
<!--Optional:-->
<display_mode xsi:type="xsd:string"></display_mode>
<!--Optional:-->
<is_anchor xsi:type="xsd:int"></is_anchor>
<!--Optional:-->
<landing_page xsi:type="xsd:int"></landing_page>
<!--Optional:-->
<meta_description xsi:type="xsd:string"></meta_description>
<!--Optional:-->
<meta_keywords xsi:type="xsd:string"></meta_keywords>
<!--Optional:-->
<meta_title xsi:type="xsd:string"></meta_title>
<!--Optional:-->
<page_layout xsi:type="xsd:string"></page_layout>
<!--Optional:-->
<url_key xsi:type="xsd:string"></url_key>
<!-- selbst definierte Felder -->
<include_in_menu xsi:type="xsd:int">1</include_in_menu>
</categoryData>
<storeView xsi:type="xsd:string">
<xsl:value-of select="'default'"></xsl:value-of>
</storeView>
</urn:catalogCategoryCreate>
</soapenv:Body>
</soapenv:Envelope>
</xsl:template>
</xsl:stylesheet>
Run Code Online (Sandbox Code Playgroud)
你有4种方法.
首先 - 在第188行添加后更改app/code/core/Mage/Catalog/etc/wsdl.xml
<element name="include_in_menu" type="xsd:int" minOccurs="0" />
Run Code Online (Sandbox Code Playgroud)
第二 - 在代码中更改Api Model app/code/core/Mage/Catalog/Model/Category/Api/V2.php的逻辑将此属性添加到新对象.
第三 - 向magento报告错误并等到它解决(接近1-2个月)
第四 - 至少创建扩展,只需覆盖app/code/core/Mage/Catalog/etc/wsdl.xml将您的参数添加到WSDL文件,在扩展中更改API模型以获取其他参数.
我的建议使用第四种方式.
| 归档时间: |
|
| 查看次数: |
2283 次 |
| 最近记录: |