symfony Prestashop Web服务HTTP响应为空错误

x4shl7ld  于 2023-03-19  发布在  其他
关注(0)|答案(1)|浏览(118)

我写了一个简单的函数来添加一个产品到presta基于prestashop网络服务库:

public function postPrestaProduct($id, $name, $description, $price, $ean, $category, $manufacturer) {
     $webService = new \PrestaShopWebService('xxx', 'xxx', false);
        
     $blankXml = $webService->get(['resource' => 'products', 'schema' => 'blank']);
     $productFields = $blankXml->product->children();

     $productFields->id = $id;

     $productFields->name = '';
     $productFields->name->addChild('language', $name);
     $productFields->name->language->addAttribute('id', '2');

     $productFields->description = '';
     $productFields->description->addChild('language', $description);
     $productFields->description->language->addAttribute('id', '2');

     $productFields->price = $price;
     $productFields->ean13 = $ean;

     $productFields->id_category_default = isset($category) ? $category : null;
     $productFields->associations->categories->category->id = isset($category) ? $category : null;
     unset($productFields->position_in_category);

     $productFields->id_manufacturer = $manufacturer;
     $productFields->active = true;

     $webService->add(['resource' => 'products', 'postXml' => $blankXml->asXML()]);
}

并且每次调用该函数时,将乘积添加到presta,然而每次返回错误:

PrestaShopWebserviceException: HTTP response is empty in /path

这导致环路断开。
有人知道是什么导致了这个错误吗?

7gyucuyw

7gyucuyw1#

巡视:

该函数似乎可以添加产品,但由于HTTP响应为空而抛出异常,可能与PrestaShop Webservice及其处理响应的方式有关。
如果这是真的,解决方案是捕获异常并调查问题的原因。您可以尝试按以下方式修改函数:

public function postPrestaProduct($id, $name, $description, $price, $ean, $category, $manufacturer) {
    try {
        $webService = new \PrestaShopWebService('xxx', 'xxx', false);
        
        // ... (rest of your code)
        
        $webService->add(['resource' => 'products', 'postXml' => $blankXml->asXML()]);
    } catch (\PrestaShopWebserviceException $e) {
        if ($e->getMessage() == 'HTTP response is empty') {
            // Log the error or handle it according to your needs
            error_log('HTTP response is empty for product ID: ' . $id);
        } else {
            throw $e;
        }
    }
}

它将捕获PrestaShopWebserviceException异常,并检查消息是否为 HTTP response is empty。如果是,您可以记录错误并继续处理其他产品,而不中断循环。如果是另一个异常,您可以抛出它。

相关问题