.net Powershell 3.0中的SOAP语法

.net Powershell 3.0中的SOAP语法,.net,web-services,powershell,magento,soap,.net,Web Services,Powershell,Magento,Soap,我试图使用Magento的SOAPv2API(Magento Enterprise,1.12.0.2版)与产品及其属性交互,但我们的商店有很多自定义属性需要编辑。除了默认的名称、描述、价格等,我们还有其他属性,我在通过SOAPv2访问这些属性时遇到了困难。我尝试使用catalogProductUpdate方法编辑属性(),但我不明白如何正确设置“additional_attributes”字段以允许编辑自定义属性。我一直收到一个错误,说它的格式不正确。例如,我们有音乐产品,所以我们想为“艺术家”

我试图使用Magento的SOAPv2API(Magento Enterprise,1.12.0.2版)与产品及其属性交互,但我们的商店有很多自定义属性需要编辑。除了默认的名称、描述、价格等,我们还有其他属性,我在通过SOAPv2访问这些属性时遇到了困难。我尝试使用catalogProductUpdate方法编辑属性(),但我不明白如何正确设置“additional_attributes”字段以允许编辑自定义属性。我一直收到一个错误,说它的格式不正确。例如,我们有音乐产品,所以我们想为“艺术家”字段设置一个值

我们的Magento中未启用WS-I法规遵从性

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

$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")
$proxy=newWebServiceProxy-uri$soapuri
$sessionid=$proxy.login($username,$password)
$array1=@{“key”=“artist”;“value”=“4845”}我还尝试将值设置为名称而不是ID号(即“key”=“artist”;“value”=“Billy Joel”),但返回了相同的错误。
$array2=@{“单一数据”=$array1}
$proxy.catalogproductupdate($sessionid,“admin”@{“其他_属性”=$array2},“sku”)
但返回的是一条错误消息,指出属性更新不需要“system.collections.hashtable”。我相信我只是在单数据/多数据嵌套方面的格式不正确。从我的理解来看,附加的_attributes参数的数组需要它里面的“single_data”参数,而“single_data”里面应该是实际的属性列表和值。总之,它就像一个3-teir哈希表

我能够使用哈希表格式编辑其他非自定义属性,因此我知道问题不在于哈希表本身。它只是“附加属性”字段


谢谢你的帮助。

终于解决了!希望这能为将来的Magento用户节省一些麻烦。要编辑其他属性,必须使用属性的id号和属性值的id号格式化(从我的示例中)
$array1
。 因此,我的
$array1
如下所示: $array1=@{“key”=“200”;“value”=“4845”} 所以“200”是我们magento中“艺术家”的属性ID。“4845”是我想要选择的值的id(在本例中为Billy Joel)。因此,您必须使用
catalogProductAttributeList
查找这些值,这将列出所有属性的ID号

编辑:正如我刚才所说,当我运行这个时,它返回“True”(这应该意味着它工作了),我立即去输入这个,但是当我在Magento中查看产品时,它实际上没有更新。所以我尝试了两种不同的ID与单词的组合,最终奏效的是我在原始问题中采用的格式。我不知道为什么那天我试过的时候它不起作用,但我发誓现在它起作用了,我什么也没改变。我对这可能发生的唯一假设是,我运行了<代码> CdActudioTabutialTeistist< /Calp>方法,也许它为我需要编辑的自定义属性创建了基础。但现在一切都好了,这个答案是无效的,对我有效的是问题中最初的例子。但愿我能有更好的解释