.net - Powershell 3.0中的SOAP语法

标签 .net web-services powershell magento soap

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

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

我在使用new-webserviceproxy的Powershell 3.0中,所以我认为这意味着我在使用.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”。我相信我只是关于single-data / multi_data嵌套的格式有误。从我的理解来看,additional_attributes参数的数组要求其中包含“single_data”参数,而“single_data”内部应为实际的属性列表和值。因此,总而言之,它就像一个3层哈希表。

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

感谢您的协助。

最佳答案

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

编辑:当我按照我刚才所说的运行它时,它返回“True”(这应该意味着它可以工作),我立即输入了它,但是当我在Magento中查看产品时,它实际上并没有更新。因此,我尝试了将ID与单词进行几种不同的组合,最终起作用的是我在原始问题中使用的格式。我不知道为什么前几天尝试时不起作用,但是我发誓现在可以起作用,而且我没有改变任何事情。我可能会发生这种情况的唯一假设是我运行了catalogProductAttributeList方法,并且也许以某种方式为我需要编辑的自定义属性创建了基础。但是现在一切都好了,这个答案是无效的,对我有用的是问题中的原始例子。希望我有一个更好的解释。

关于.net - Powershell 3.0中的SOAP语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37925627/

相关文章:

c# - 实现自定义 CacheDependency 以使 ASP.Net 缓存项无效

c# - 如何使用 HttpClient 返回 "refresh"cookie

c# - 在 dll 文件中创建 Web 服务?可以吗?

azure - 当前面的所有任务都成功(少数任务除外)时,运行任务 B(如果任务列表成功则运行任务)

powershell - Resolve-DnsName - 特定端口上的服务器

python - 更正 pb 文件以将 Tensorflow 模型移动到 ML.NET

c# - 监视器.TryEnter()

c# - .NET 控件的最佳开源是什么?

java - Rest JAX-RS异常,未找到MessageBodyWriter

.net - Powershell 从字符串中生成 System.Type