Powershell 3.0 中的 SOAP 语法

问题描述 投票:0回答:1

我正在尝试使用 Magento 的 SOAP v2 API(Magento Enterprise,版本 1.12.0.2)与产品及其属性进行交互,但我们的商店有很多自定义属性需要编辑。除了默认名称、描述、价格等之外,我们还有其他属性,我无法通过 SOAP v2 访问这些属性。我尝试使用catalogProductUpdate方法来编辑属性(devdocs页面此处),但我无法理解如何正确设置“additional_attributes”字段以允许编辑自定义属性。我不断收到错误消息,说格式不正确。例如,我们有音乐产品,所以我们想为我们的“艺术家”字段设置一个值。

我们的 Magento 中未启用 WS-I 合规性。

我在 Powershell 3.0 中使用 new-webserviceproxy,所以我相信这意味着我正在使用 .NET 框架。所以我的尝试看起来像这样

$proxy = new-webserviceproxy -uri $soapuri

$sessionid = $proxy.login($username,$password)

$array1 = @{"key"="artist";"value"="4845"} #I also tried setting the value to the name instead of the ID number (ie. "key" = "artist";"value"="Billy Joel") but that returned the same error.

$array2 = @{"single_data" = $array1}

$proxy.catalogproductupdate($sessionid, <a sku number>, "admin", @{"additional_attributes" = $array2}, "sku")

但是返回的是一条错误消息,指出属性更新不需要“system.collections.hashtable”。我相信我只是对单数据/多数据嵌套的格式不正确。根据我的理解,additional_attributes 参数的数组需要其中的“single_data”参数,而“single_data”内部应该是实际的属性列表和值。所以总的来说,它就像一个 3 层哈希表。

我可以使用哈希表格式来编辑其他非自定义属性,所以我知道问题不在于哈希表本身。这只是“additional_attributes”字段。

感谢您的帮助。

.net powershell magento soap magento-soap-api
1个回答
0
投票

终于明白了!希望这可以为未来的 Magento 用户省去一些麻烦。要编辑其他属性,您必须使用属性的 id 编号和属性值的 id 编号来格式化(在我的示例中)

$array1
。 所以我的
$array1
看起来像这样: $array1 = @{"key" = "200";"value" = "4845"} 所以“200”是我们的magento中“艺术家”的属性ID。 “4845”是我想要选择的值的 ID(在本例中为 Billy Joel)。因此,您必须使用
catalogProductAttributeList
查找这些值,这将列出所有属性的 ID 号。

编辑:当我按照我刚才所说的那样运行这个时,它返回“True”(这应该意味着它有效),我立即去输入这个,但是当我在 Magento 中查看产品时,它实际上并没有更新。因此,我尝试了几种不同的 ID 与单词的组合,最终起作用的是我在原始问题中使用的格式。我不知道为什么前几天我尝试时不起作用,但我发誓它现在起作用了,而且我没有改变任何东西。对于为什么会发生这种情况,我唯一的假设是我运行了

catalogProductAttributeList
方法,也许这以某种方式为我需要编辑的自定义属性奠定了基础。但现在一切都很好,这个答案是无效的,对我有用的是问题中的原始例子。希望我有更好的解释。

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.