php中curl模擬post提交多維數組


今天需要用curl模擬post提交參數,請求同事提供的一個接口;但是傳遞的參數中,有一個參數的值為數組,用普通的curl post代碼提交,會報錯誤

PHP Notice:  Array to string conversion in /test/functions.php on line 30

Notice: Array to string conversion in /test/functions.php on line 30

代碼如下:

<?php
                $param = array(
                                'uid' => 123,  
                                'uids' => array(12,455),  
                                'msgType' => 'WITH',   
                                'nick' => 'aaa',     
                              );
                $url = "http://cx.com/t.php";
               //通過curl的post方式發送接口請求
               SendDataByCurl($url,$param);

              //通過curl模擬post的請求;
function SendDataByCurl($url,$data=array()){
    //對空格進行轉義
    $url = str_replace(' ','+',$url);

    $ch = curl_init();
    //設置選項,包括URL
    curl_setopt($ch, CURLOPT_URL, "$url");
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch,CURLOPT_TIMEOUT,3);  //定義超時3秒鍾  
     // POST數據
    curl_setopt($ch, CURLOPT_POST, 1);
    // 把post的變量加上
    curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
    
    //執行並獲取url地址的內容
    $output = curl_exec($ch);
    //釋放curl句柄
    curl_close($ch);
    return $output;

}

經過修改上面代碼,可以完成提交數組的功能,而不會報php notice,代碼如下:

//通過curl模擬post的請求;
function SendDataByCurl($url,$data=array()){
    //對空格進行轉義
    $url = str_replace(' ','+',$url);
    $ch = curl_init();
    //設置選項,包括URL
    curl_setopt($ch, CURLOPT_URL, "$url");
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch,CURLOPT_TIMEOUT,3);  //定義超時3秒鍾  
     // POST數據
    curl_setopt($ch, CURLOPT_POST, 1);
    // 把post的變量加上
    curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data)); //所需傳的數組用http_bulid_query()函數處理一下,就ok了 //執行並獲取url地址的內容
    $output = curl_exec($ch);
    $errorCode = curl_errno($ch);
    //釋放curl句柄
    curl_close($ch);
    if(0 !== $errorCode) {
        return false;
    }
    return $output;

}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM