如何使用CURL将发布数据发送到Laravel中的mailchimp

时间:2019-01-19 07:11:17

标签: php laravel curl

我想在我的应用程序中将数据发布到我创建的 mailchimp 帐户和 mailchimp ID中,并获取API KEY。现在,我想在发送数据时使用php CURL方法在 mailchimp 上发布数据,它显示类似

的错误

错误页面 enter image description here

发布数据参数

enter image description here

注意:在使用CURL提取数据时,这是非常好的。

任何身体帮助如何解决这个问题。

这是我的方法

public function callAPI($method, $url, $data=null)
{
   $curl = curl_init();
    switch ($method)
    {
        case "POST":
            curl_setopt($curl, CURLOPT_POST, 1);
            curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
            break;
            case "PUT":
                curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "PUT");
            if ($data)
                curl_setopt($curl, CURLOPT_POSTFIELDS, $data);                              
            break;
            default:
            if($data)
                $url = sprintf("%s?%s", $url, http_build_query($data));
        }
        $headers = array(  
            "Authorization: Basic b3dhaXNfdGFhcnVmZjo5MzM1M" 
        );
        curl_setopt_array($curl, 
        [
            CURLOPT_RETURNTRANSFER => true,
            CURLOPT_SSL_VERIFYPEER => false,
            CURLOPT_SSL_VERIFYHOST => false,
            CURLOPT_HTTPHEADER => $headers, 
            CURLOPT_HEADER => true,
            CURLOPT_URL => $url.'?apikey=this is api key'
        ]);

        $response = curl_exec($curl);
        curl_close($curl);
        return $response;
}

这是存储功能

public function store(Request $request)
{
   $data_array = '
    {
        "id": "PRS08", 
        "title": "108", 
        "handle": "108", 
        "url": "http://boksha.eshmar.com/product/hoodie-kaftan-1", 
        "description": "", 
        "type": "Abaya",
        "vendor": "TALAR NINA", 
        "image_url": "http://boksha.eshmar.com/uploads/products/140/images/cropped/1512195907.png", 
        "variants": 
        [
        {
            "id": "PROD003A", 
            "title": "variants 1", 
            "url": "", 
            "sku": "", 
            "price": 280, 
            "inventory_quantity": 100, 
            "image_url": "http://boksha.eshmar.com/uploads/products/140/images/cropped/1512195907.png", 
            "backorders": "0", 
            "visibility": "visible", 
            "created_at": "2016-02-08T13:06:44+00:00", 
            "updated_at": "2016-02-08T13:06:44+00:00"
        },
        {
            "id": "PROD003B", 
            "title": "variants 2", 
            "url": "", 
            "sku": "", 
            "price": 280, 
            "inventory_quantity": 99, 
            "image_url": "http://boksha.eshmar.com/uploads/products/140/images/cropped/1512195907.png",
             "backorders": "0", 
             "visibility": "true", 
             "created_at": "2016-02-08T22:14:37+00:00", 
             "updated_at": "2016-02-08T22:22:38+00:00"
            }
        ]
    }';
    $url = "https://us7.api.mailchimp.com/3.0/";
    $data = $this->callAPI('POST', $url, $data_array);
    echo "<pre>";
    print_r($data);
}

2 个答案:

答案 0 :(得分:0)

我看到两件事可能是个问题。

首先-将内容类型添加到标题中。看来您正在尝试发布json字符串,因此您的标头将声明为合理。

$headers = array(  
 'Authorization: Basic b3dhaXNfdGFhcnVmZjo5MzM1M',
 'Content-Type: application/json' //Addded the content type as json.
 );

第二-您发送的json字符串无效。您需要删除字符串中最后一个元素的逗号。

$data_array = '
        {
            "id": "PRS08", 
            "title": "Php Curl", 
            "name": "Shahid Hussain", 
            "url": "http://fstnv.com", 
            "description": "This is test data"
        }'; //Removed the comma after last element.  Otherwise the json is invalid.

看看是否有帮助。

答案 1 :(得分:0)

请检查终点, 端点不正确。

根据邮递区号,终点应如下所示

https://us7.api.mailchimp.com/3.0//ecommerce/stores/store_001/products

更新相同。