【发布时间】:2021-07-18 01:07:26
【问题描述】:
我正在使用Prestashop Webservices Library 创建和更新产品。 我在创建它们时没有问题,但在更新时,即使我在创建产品时也没有问题,但在将 HTML 添加到描述字段时它会给我一个错误 404。
如果我删除 html,我可以更新产品,但它也应该可以使用它。 我在 Prestashop 库中extended SimpleXMLElement to add a CDATA,但结果是一样的
require_once('class/PSWebServiceLibrary.php');
try {
$webService = new PrestaShopWebservice('https://mywebsite', 'MYKEY', false);
$idProduct = 30;
$xmlResponse = $webService->get(['resource' => 'products', 'id' => $idProduct]);
$updateProductXML = $xmlResponse->product[0];
unset($updateProductXML->manufacturer_name); //Not writable, remove them
unset($updateProductXML->position_in_category);
unset($updateProductXML->quantity);
$updateProductXML->name->language[0][0] = "TEST";
$updateProductXML->description->language[0][0] = "This is not working if I add this: & ";
$response = $webService->edit([
'resource' => 'products',
'id' => (int) $updateProductXML->id,
'putXml' => $xmlResponse->asXML(),
]);
} catch ( PrestaShopWebserviceException $e){
echo $e->getMessage();
}
如果我删除描述字段中的&,它会起作用并更新产品,否则即使描述在 CData 节点中,它也会返回 404 错误):
效果不佳:
$updateProductXML->description->language[0][0]->addCData('test &amp: test');
$updateProductXML->description->language[0][0]->addCData('juste normal text but in cdata');
有什么想法吗?
谢谢:)
Prestashop 版本:1.7.7.3,全新安装
【问题讨论】:
-
通过在 PrestaShop Webservices 库中传递调试模式 true 来检查实际错误
-
@ArunVishwakarama 它已经打开,但它不返回错误,它会产生 404 错误(正常错误不是 web 服务错误,因此它返回 404 错误页面)。问题只是在描述中添加特殊字符时,没有它的相同代码可以工作,如果我在其他字段中输入不正确的数据,webservices会返回错误400
-
调试我试过这个:它在对描述字段进行 urlencode 时起作用,然后在 WebserviceRequest.php 的第 1594 行周围进行特定的 urldecode
-
那么CDATA肯定有问题,请打印数据确认是文件
-
@ArunVishwakarama 我把它贴在下面
标签: xml rest web-services prestashop prestashop-1.7