首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PrestaShop webService返回意外的HTTP状态503

PrestaShop webService返回意外的HTTP状态503
EN

Stack Overflow用户
提问于 2017-01-19 03:16:41
回答 1查看 3.1K关注 0票数 0

我正在将仓库管理系统(基于PHP)与PrestaShop1.6集成,并使用PrestaShop Web Service进行集成。

我必须让新产品(在仓库管理系统中创建)出现在PrestaShop 1.6在线商店上。仓库管理系统要求PrestaShop WebService在PrestaShop在线商店上创建新产品。

我已经编写了如下所示的函数。它在我的本地主机上运行良好,但在测试服务器上,它在尝试更新库存可用性后收到HTTP状态503。在所有WebService实体上启用所有WebService方法(GET、PUT、DELETE等)。我不知道如何调试这个问题,你能帮我吗?

顺便说一下,我使用以下代码作为示例:https://github.com/xabikip/PrestaShopWebService/blob/master/examples/createProduct.php

代码语言:javascript
复制
private function saveProduct($update, $webService, $root_path, $n_id, $n_id_category_default, $n_id_category, $n_price, $n_active, $n_avail4order, $n_show_price, $n_l_id, $n_name, $n_desc, $n_desc_short, $n_link_rewrite, $n_meta_title, $n_meta_description, $n_meta_keywords, $n_available_now, $n_available_later, $idtaglist, $cod, $quantity) {

        $webService = new PrestaShopWebservice($this->ps_shop_path, $this->ps_ws_auth_key, $this->ps_ws_debug);

        $xml = $webService->get(array('url' => $root_path . '/api/products?schema=blank'));
        $resources = $xml->children()->children();

        /*
        many values of attributes of XML object $resources are assigned here, instead of this comment
        */

        $id = "";
        try {
            $opt = array('resource' => 'products');
            if(!$update){
                $opt['postXml'] = $xml -> asXML();
                $xml = $webService -> add($opt);
                $id = $xml->product->id;
            }
            else{
                $opt['putXml'] = $xml -> asXML();
                $opt['id'] = $n_id;
                $xml = $webService -> edit($opt);
                $id = $n_id;
            }
        }
        catch (PrestaShopWebserviceException $ex) {
            echo '<b>Error : '.$ex->getMessage().'</b>';
        }

        $resources = $xml->children()->children();
        $stock_available_id = $resources->associations->stock_availables->stock_available[0]->id;
        /*
        Here we get the sotck available with were product id
        */
        try
        {
            $opt = array('resource' => 'stock_availables');
            $opt['id'] = $stock_available_id;
            $xml = $webService->get($opt);
        }
        catch (PrestaShopWebserviceException $e)
        {
            $trace = $e->getTrace();
            if ($trace[0]['args'][0] == 404) die('1:Bad ID');
            else if ($trace[0]['args'][0] == 401) die('1:Bad auth key');
            else die('1:Other error '.$e->getMessage());
        }
        $resources = $xml->children()->children();
        $resources->quantity = $quantity;
        /*
        There we call to save our stock quantity.
        */
        try
        {
            $opt = array('resource' => 'stock_availables');
            $opt['putXml'] = $xml->asXML();
            $opt['id'] = $stock_available_id;
            $xml = $webService->edit($opt);
            echo "Successfully updated.";
        }
        catch (PrestaShopWebserviceException $e)
        {
            $trace = $e->getTrace();
            if ($trace[0]['args'][0] == 404) die('2:Bad ID');
            else if ($trace[0]['args'][0] == 401) die('2:Bad auth key');
            else echo('Other error: '.$e->getMessage()); // function echoes this PrestaShopWebServiceException: "Other error: This call to PrestaShop Web Services returned an unexpected HTTP status of:503"
        }

    }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-01-19 03:32:10

在大多数托管中,默认关闭PUT请求。你和你的托管经理确认过了吗??无论如何,你必须使用activate Prestashop DEBUG MODE才能知道错误的确切原因(当然是在你解决了这个问题之后)。

祝好运。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41727659

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档