CURL 支持 GET、PUT、POST、DELETE請求

一個方法解決全部的 curl 請求的問題。php

<?php算法

function curlTypeData( $method, $url, $data=false, $json=false )
{
  $dataString = $json ? json_encode( $data ) : http_build_query( $data );
  $ch = curl_init(); // 啓動一個 CURL 請求
  curl_setopt( $ch, CURLOPT_URL, $url ); // 肯定要請求的地址
  curl_setopt( $ch, CURLOPT_HEADER, 0); // 是否顯示返回的 Header 區域內容
  curl_setopt( $ch, CURLINFO_HEADER_OUT, true ); // 獲取請求頭信息
  curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true); // 獲取的信息以文件流的形式返回
  curl_setopt( $ch, CURLOPT_TIMEOUT, 5 ); // 請求過時時間
  // curl_setopt( $ch, CURLOPT_SSL_VERIFYHOST, false); // 從證書中檢查SSL加密算法是否存在
  // curl_setopt( $ch, CURLOPT_SSL_VERIFYPEER, false); // 對認證證書來源的檢查

  // 判斷要執行的 CURL 的請求方式
  $method = strtoupper( $method );
  switch ( $method ) {
    case 'GET':
      curl_setopt( $ch, CURLOPT_HTTPGET, true ); // 設置請求方式爲 GET
      break;
    case 'POST':
      curl_setopt( $ch, CURLOPT_POST, true ); // 設置請求方式爲 POST
      curl_setopt( $ch, CURLOPT_POSTFIELDS, $dataString );// 設置請求體,提交數據包
      break;
    case 'PUT':
      curl_setopt( $ch, CURLOPT_PUT, true ); // 設置請求方式爲 PUT
      // curl_setopt( $ch, CURLOPT_CUSTOMREQUEST, 'PUT' );// 設置請求方式爲 PUT
      curl_setopt( $ch, CURLOPT_POSTFIELDS, $dataString );//設置請求體,提交數據包
      break;
    case 'DELETE':
      curl_setopt( $ch, CURLOPT_CUSTOMREQUEST, 'DELETE' );// 設置請求方式爲 DELETE
      break;
    default:
      echo "不存在請求方式";
      die();
  }

  // 判斷是否要求 json
  if ( $json ) {
    curl_setopt($ch, CURLOPT_HTTPHEADER, array(
      'Content-Type: application/json; charset=utf-8',
      'Content-Length: ' . strlen($dataString))
    );
  }

  // 執行操做
  $output = curl_exec( $ch ); // 執行操做
  // $code = curl_getinfo( $ch, CURLINFO_HTTP_CODE ); // 獲取返回的狀態碼
  curl_close($ch); // 關閉CURL會話
  echo $output;
}

?>json

相關文章
相關標籤/搜索