1. 程式人生 > >PHP post & get請求

PHP post & get請求

uil baidu urldecode ech php post each params conn stat

  1 <?php
  2 /**
  3  * HTTP 請求類
  4  */
  5 class HttpHelper {
  6   
  7     const METHOD_GET = ‘GET‘;
  8     const METHOD_POST = ‘POST‘;
  9 
 10     private static $_connectTimeout = 60;
 11     private static $_timeout = 60;
 12     
 13     /**
 14      * Http post請求
 15      * @param type $url  http url address
16 * @param type $data post params name => value 17 */ 18 public static function post($url, $data = array()){ 19 20 $queryString = self::buildHttpQueryString($data, self::METHOD_POST); 21 22 $response = self::makeHttpRequest($url, self::METHOD_POST,$queryString
); 23 return $response; 24 } 25 26 /** 27 * http get 請求 28 * @param type $url http url address 29 * @param type $data get params name => value 30 */ 31 public static function get($url,$data = array()) { 32 if(!empty($data)){ 33 $url
.= "?" . self::buildHttpQueryString($data, self::METHOD_GET); 34 } 35 $response = self::makeHttpRequest($url, self::METHOD_GET); 36 return $response; 37 } 38 39 /** 40 * 構造並發送一個http請求 41 * @param type $url 42 * @param type $method 43 * @param type $postFields 44 * @return type 45 */ 46 public static function makeHttpRequest($url,$method,$postFields = null) { 47 $ch = curl_init(); 48 curl_setopt($ch, CURLOPT_URL, $url); 49 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 50 if(self::METHOD_POST == $method){ 51 curl_setopt($ch, CURLOPT_POST, 1); 52 if(!empty($postFields)){ 53 curl_setopt($ch, CURLOPT_POSTFIELDS, $postFields); 54 } 55 } 56 curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, self::$_connectTimeout); 57 curl_setopt($ch, CURLOPT_TIMEOUT, self::$_timeout); 58 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 59 curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); 60 61 $result = curl_exec($ch); 62 curl_close($ch); 63 return $result; 64 } 65 66 /** 67 * 構造http請求的查詢字符串 68 * @param array $params 69 * @param type $method 70 * @return string 71 */ 72 public static function buildHttpQueryString(array $params, $method = self::METHOD_GET) { 73 if(empty($params)){ 74 return ‘‘; 75 } 76 if(self::METHOD_GET == $method){ 77 $keys = array_keys($params); 78 $values = self::urlEncode(array_values($params)); 79 $params = array_combine($keys, $values); 80 } 81 82 $fields = array(); 83 84 foreach ($params as $key => $value) { 85 $fields[] = $key . ‘=‘ . $value; 86 } 87 return implode(‘&‘,$fields); 88 } 89 90 /** 91 * url encode 函數 92 * @param type $item 數組或者字符串類型 93 * @return type 94 */ 95 public static function urlEncode($item) { 96 if(is_array($item)){ 97 return array_map(array(‘HttpHelper‘,‘urlEncode‘), $item); 98 } 99 return rawurlencode($item); 100 } 101 102 /** 103 * url decode 函數 104 * @param type $item 數組或者字符串類型 105 * @return type 106 */ 107 public static function urlDecode($item){ 108 if(is_array($item)){ 109 return array_map(array(‘HttpHelper‘,‘urlDecode‘), $item); 110 } 111 return rawurldecode($item); 112 } 113 }

使用方法:

echo HttpHelper::get(‘http://www.baidu.com‘, array(‘t‘ => 1));

PHP post & get請求