phpが他のインタフェースのpostまたはgetまたはdeleteまたはputを呼び出す方法

4991 ワード

1.PHP cURL関数基本リスト
curl_close()	//    cURL  
curl_copy_handle()	//    cURL         
curl_errno()	//          
curl_error()	//                    
curl_escape()	//       ,         URL  
curl_exec()	//    cURL  
curl_file_create()	//    CURLFile  
curl_getinfo()	//    cURL         
curl_init()	//     cURL  
curl_multi_add_handle()	// curl           curl  
curl_multi_close()	//    cURL  
curl_multi_exec()	//    cURL      
curl_multi_getcontent()	//     CURLOPT_RETURNTRANSFER,            
curl_multi_info_read()	//       cURL       
curl_multi_init()	//     cURL     
curl_multi_remove_handle()	//  curl               
curl_multi_select()	//    cURL         
curl_multi_setopt()	//       cURL    
curl_multi_strerror()	//             
curl_pause()	//       
curl_reset()	//  libcurl          
curl_setopt_array()	// cURL          
curl_setopt()	//    cURL    
curl_share_close()	//  cURL    
curl_share_init()	//   cURL    
curl_share_setopt()	//         cURL    
curl_strerror()	//            
curl_unescape()	//  URL       
curl_version()	//  cURL    

2.HTTPの方式要求関数実現
/**
 *   HTTP    
 * @param  string $url      URL
 * @param  array  $params     
 * @param  string $method     GET/POST
 * @return array  $data       
 */
function http($url, $params, $method = 'GET', $header = array(), $multi = false){
    $opts = array(
            CURLOPT_TIMEOUT        => 30,
            CURLOPT_RETURNTRANSFER => 1,
            CURLOPT_SSL_VERIFYPEER => false,
            CURLOPT_SSL_VERIFYHOST => false,
            CURLOPT_HTTPHEADER     => $header
    );
    /*              
   *  strtoupper()            。
    */

    switch(strtoupper($method)){
        case 'GET':
            $opts[CURLOPT_URL] = $url . '?' . http_build_query($params);
            break;
        case 'POST':
            //        
            $params = $multi ? $params : http_build_query($params);
            $opts[CURLOPT_URL] = $url;
            $opts[CURLOPT_POST] = 1;
            $opts[CURLOPT_POSTFIELDS] = $params;
            break;
        default:
            throw new Exception('        !');
    }
    /*       curl   */
    $ch = curl_init();
    curl_setopt_array($ch, $opts);
    $data  = curl_exec($ch);
    $error = curl_error($ch);
    curl_close($ch);
    if($error) throw new Exception('      :' . $error);
    return  $data;
}

3.上記の関数の呼び出し方法:
//          URL;
$url = "https://www.xxx.com";
//         ;
$data['aaa']='aaaaa';
$data['bbb']='bbbb';
//         ;
$httpstr = http($url, $data, 'POST', array("Content-type: text/html; charset=utf-8"));

4.delete要求の2つのスキームを提供する他の要求方式のインタフェースを呼び出す.
/**
 * [http       ]
 * @param  string       $url     [    ]
 * @param  array        $params  [  ]
 * @param  string       $method  [GET\POST\DELETE\PUT]
 * @param  array        $header  [HTTP   ]
 * @param  integer      $timeout [    ]
 * @return [type]                [      ]
 */
function http($url, $params, $method = 'GET', $header = array(), $timeout = 5)
{
    // POST         $set_params         
    $opts = array(
        CURLOPT_TIMEOUT => $timeout,
        CURLOPT_RETURNTRANSFER => 1,
        CURLOPT_SSL_VERIFYPEER => false,
        CURLOPT_SSL_VERIFYHOST => false,
        CURLOPT_HTTPHEADER => $header
    );
    //http_build_query          &    ,
    /*              */
    switch (strtoupper($method)) {
        case 'GET':
            $opts[CURLOPT_URL] = $url . '?' . http_build_query($params);
            break;
        case 'POST':
            $params = http_build_query($params);
            $opts[CURLOPT_URL] = $url;
            $opts[CURLOPT_POST] = 1;
            $opts[CURLOPT_POSTFIELDS] = $params;
            break;
      //  delete    1:
        case 'DELETE':
            $opts[CURLOPT_URL] = $url;
            $opts[CURLOPT_HTTPHEADER] = array("X-HTTP-Method-Override: DELETE");
            $opts[CURLOPT_CUSTOMREQUEST] = 'DELETE';
            $opts[CURLOPT_POSTFIELDS] = $params;
            break;
      //  delete  1  ,   2:
        case 'DELETEGET':
            $opts[CURLOPT_HTTPHEADER] = array("X-HTTP-Method-Override: DELETE");
            $opts[CURLOPT_CUSTOMREQUEST] = 'DELETE';
            $opts[CURLOPT_URL] = $url . '?' . http_build_query($params);
        case 'PUT':
            $opts[CURLOPT_URL] = $url;
            $opts[CURLOPT_POST] = 0;
            $opts[CURLOPT_CUSTOMREQUEST] = 'PUT';
            $opts[CURLOPT_POSTFIELDS] = $params;
            break;
        default:
            throw new Exception('        !');
    }
  
    /*       curl   */
    $ch = curl_init();
    curl_setopt_array($ch, $opts);
    $data = curl_exec($ch);
    $error = curl_error($ch);
    return $data;
}