Shopify Asset API使用PUT方法更新collection.liquid,使用cURL给出404

时间:2017-05-06 09:09:51

标签: php codeigniter curl shopify put

我正在尝试使用Shopify API更新 collection.liquid 我在Shopify API包装器下面使用CodeIgniter,

Shopify API wrapper

此包装使用 cURL 进行API调用。我已经使用这个库为Shopify制作了其他应用程序,它可以与 GET,POST 方法一起使用。我第一次尝试使用 PUT 方法。它给我 cURL错误,如下所示
错误#22:请求的网址返回错误:404 Not Found“

    protected function modify_asset($theme_id)
{

       $data = array(
            'API_KEY' => $this->config->item('shopify_api_key'),
            'API_SECRET' => $this->config->item('shopify_secret'),
            'SHOP_DOMAIN' => $this->session->userdata('shop_domain'),
            'ACCESS_TOKEN' => $this->session->userdata('access_token')
        );

        $this->load->library('shopify', $data);

        $fields = array(
            "asset" => array(

                "key" => "templates\/collection.liquid",
                "value" => "<p>We are busy updating the store for you and will be back within 10 hours.<\/p>"

            )
        );



        $args = array(

                 'URL' => '/admin/themes/163760333/assets.json',
                 'METHOD' => 'PUT',
                 'RETURNARRAY' => TRUE,
                 'DATA' => $fields
            );
        try{

            $modification_response = $this->shopify->call($args);
            return $modification_response;


        }
        catch(Exception $e){
            $modification_response = $e->getMessage();
            log_message('error','In Get Active Theme Id' . $modification_response);
            //redirect('/wrong/index');
            var_dump('In modification response ' . $modification_response);
            exit;
        }

}


}


以上是我实现API调用的函数。您可以在以下链接中查看cURL选项及其实现:
cURL options and happening of Shopify API call

注意:此请求在POSTMAN上运行正常。

1 个答案:

答案 0 :(得分:1)

我刚刚使用您提供的信息对此代码进行了一些测试,并且在删除$ fields ['asset'] ['key']中的反斜杠后能够成功提交,如上例所示

所以

"key" => "templates\/collection.liquid",

变为:

"key" => "templates/collection.liquid",

Shopify不需要转义文件密钥中的正斜杠。