- 背景:**
我正在尝试更新订单资源的shipping_number
,但是,我尝试过的所有组合似乎都失败了。
目前使用的是Prestashop 1.7.8.7
版本(截至撰写本文时的最新版本)。
我试图通过启用PrestaShop商店中的WebService功能后可用的rest api更新资源。所有的获取请求工作没有任何问题...
最初,api调用被挂接为使用JSON
,而不是默认的XML
。但是,在了解到PUT请求只接受XML输入后,我对此进行了更新,但仍然得到不成功的响应。
目前我试图在Postman
中完成这项工作,然后再尝试在代码库中进行复制。
- 在Postman中复制的步骤:**
As per the Prestashop docs for updating a resource: https://devdocs.prestashop-project.org/1.7/webservice/getting-started/#update-a-resource
1.按ID获取订单:[GET:] /api/orders/1?display=full
1.从提取复制响应
1.将响应粘贴到请求正文中
1.将shipping_method
节点的值更改为新的/不同的值
1.更新顺序:[PUT:] /api/orders/1
我还通过将ini_set('display_errors', 'on');
添加到config/config.inc.php
文件中启用了更详细的错误响应消息。这在下面的响应中的附加消息中显示。
- 最新答复:**
Notice: Undefined offset: 1 in /webservice/dispatcher.php on line 40
{
"errors": [
{
"code": 90,
"message": "id is required when modifying a resource"
}
]
}
- 尝试的其他操作:**
其中一些尝试会导致稍微不同的错误消息(500内部服务器错误等),但仍然失败!
1.将http方法更改为POST
或PATCH
1.更新资源端点以指向/orders
而不是/orders/1
(我尝试更新的特定顺序)
1.将内容类型更改为text
而不是xml
1.请求正文中的各种不同XML结构(见下)
x一个一个一个一个x一个一个二个一个x一个一个三个一个
我能在网上找到的唯一的例子看起来都是使用专用的Prestashop WebServivce库,它为他们提供了一个专用的客户端,并允许他们调用edit()
函数,所以没有太大的帮助!使用这个库也不是一个选项,因为我的应用程序是用c#编写的。
1条答案
按热度按时间holgip5t1#
确保在一行中POST整个XML。
我记得有一个类似的问题,由于无法识别/错误的回车在请求。