[小技巧] 【使用Curl组件GET/POST数据】

  1. //Curl Get数据
  2. function _curl_get($url) {      
  3.     $ch = curl_init();    
  4.     curl_setopt($ch, CURLOPT_URL,$url);     
  5.     curl_setopt($ch, CURLOPT_HEADER, 0);    
  6.     curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);     
  7.     $data = curl_exec($ch);        
  8.     curl_close($ch);      
  9.     if ($data)   
  10.         return $data;     
  11.     else
  12.         return false;     
  13. }      
  14. //Curl Post数据
  15. function _curl_post($url$vars) {       
  16.     $ch = curl_init();    
  17.     curl_setopt($ch,CURLOPT_RETURNTRANSFER, 1);      
  18.     curl_setopt($ch, CURLOPT_URL,$url);     
  19.     curl_setopt($ch, CURLOPT_POST, 1 );     
  20.     curl_setopt($ch, CURLOPT_POSTFIELDS, $vars);     
  21.     $data = curl_exec($ch);        
  22.     curl_close($ch);      
  23.     if ($data)   
  24.         return $data;     
  25.     else
  26.         return false;     
  27. }      

 

 

通用函数

 

  1. /**
  2. * 使用GET方法发送HTTP请求
  3. *
  4. * @param string $url 需要请求的URL,完整URL,例如:http://www.example.com:8080/test.php?parm1=var1&parm2=var2
  5. * @param array/string $cookies 如果有COOKIE数据可以发送过去,可以是Cookie数组,也可以是Cookie字符串
  6. * @return mixed 成功返回GET回来的数据,失败返回false
  7. */
  8. function http_get($url$cookies = array()) {
  9.         /**
  10.          * 使用cURL处理GET请求
  11.          */
  12.         if (function_exists('curl_init')){
  13.                 //组织COOKIE数据
  14.                 $header = array();
  15.                 if (!emptyempty($cookies)){
  16.                         if (is_array($cookies)){
  17.                                 $encoded = '';
  18.                                 while (list($k,$v) = each($cookies)) { 
  19.                                         $encoded .= ($encoded ? ";" : ""); 
  20.                                         $encoded .= rawurlencode($k)."=".rawurlencode($v); 
  21.                                 }
  22.                                 $header = array("Cookie :"$encoded);
  23.                         } elseif (is_string($cookies)){
  24.                                 if (strtolower(substr($cookies, 0, 7)) == 'cookie:'){
  25.                                         $header = array($cookies);
  26.                                 } else {
  27.                                         $header = array("Cookie: "$cookies);
  28.                                 }
  29.                         }
  30.                 }
  31.                 //处理请求
  32.                 $ch = curl_init();    
  33.                 curl_setopt($ch, CURLOPT_URL,$url);
  34.                 curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
  35.                 curl_setopt($ch, CURLOPT_HEADER, 0);
  36.                 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  37.                 $data = curl_exec($ch);        
  38.                 curl_close($ch);      
  39.                 if ($data)   
  40.                         return $data;
  41.                 else
  42.                         return false; 
  43.         }
  44.         
  45.         /**
  46.          * 使用fsockopen处理GET请求
  47.          */
  48.         else {
  49.                 //组织COOKIE数据
  50.                 $cookie = '';
  51.                 if (!emptyempty($cookies)){
  52.                         if (is_array($cookies)){
  53.                                 $encoded = '';
  54.                                 while (list($k,$v) = each($cookies)) { 
  55.                                         $encoded .= ($encoded ? ";" : ""); 
  56.                                         $encoded .= rawurlencode($k)."=".rawurlencode($v); 
  57.                                 }
  58.                                 $cookie = $encoded;
  59.                         } elseif (is_string($cookies)){
  60.                                 if (strtolower(substr($cookies, 0, 7)) == 'cookie:'){
  61.                                         $cookie = substr($cookies, 7);
  62.                                 } else {
  63.                                         $cookie = $cookies;
  64.                                 }
  65.                         }
  66.                 }
  67.                 //处理请求
  68.                 $url = parse_url($url); 
  69.                 if (strtolower($url['scheme']) != 'http' && $url['scheme'] != ''){
  70.                         return false;
  71.                 }
  72.                 if ( !($fp = fsockopen($url['host'], $url['port'] ? $url['port'] : 80, $errno$errstr, 10))){
  73.                         return false;
  74.                 }
  75.                 fputs($fp, sprintf("GET %s%s%s HTTP/1.0/n"$url['path'], $url['query'] ? "?" : ""$url['query'])); 
  76.                 fputs($fp"Host: $url[host]/n"); 
  77.                 fputs($fp"User-Agent: HFHttp-Client/n");
  78.                 if ($cookie != ''){
  79.                         fputs($fp"Cookie: $cookie/n/n"); 
  80.                 }
  81.                 fputs($fp"Connection: close/n/n"); 
  82.                 fputs($fp"$post /n");
  83.                 $ret = '';
  84.                 while (!feof($fp)) { 
  85.                         $c = fgets($fp, 1024);
  86.                         if (preg_match("/^HTTP/"$c) || preg_match("/^P3P/"$c) || preg_match("/^([A-Za-z/-]+)/:/s*(.*)$/"$c)){
  87.                                 continue;
  88.                         }
  89.                         if (trim($c) == ""){
  90.                                 continue;
  91.                         }
  92.                         $ret .= $c
  93.                 } 
  94.                 fclose($fp);
  95.                 return $ret;                
  96.         }
  97. }
  98. /**
  99. * 使用POST方法发送HTTP请求
  100. *
  101. * @param string $url 需要请求的URL,完整URL,例如:http://www.example.com:8080/test.php?parm1=var1&parm2=var2
  102. * @param array $vars 需要POST提交的变量数组
  103. * @param array/string $cookies 如果有COOKIE数据可以发送过去,可以是Cookie数组,也可以是Cookie字符串
  104. * @return mixed 成功返回GET回来的数据,失败返回false
  105. */
  106. function http_post($url$vars = array(), $cookies = array()) {
  107.         /**
  108.          * 使用cURL处理POST请求
  109.          */
  110.         if (function_exists('curl_init')){
  111.                 //组织COOKIE数据
  112.                 $header = array();
  113.                 if (!emptyempty($cookies)){
  114.                         if (is_array($cookies)){
  115.                                 $encoded = '';
  116.                                 while (list($k,$v) = each($cookies)) { 
  117.                                         $encoded .= ($encoded ? ";" : ""); 
  118.                                         $encoded .= rawurlencode($k)."=".rawurlencode($v); 
  119.                                 }
  120.                                 $header = array("Cookie :"$encoded);
  121.                         } elseif (is_string($cookies)){
  122.                                 if (strtolower(substr($cookies, 0, 7)) == 'cookie:'){
  123.                                         $header = array($cookies);
  124.                                 } else {
  125.                                         $header = array("Cookie: "$cookies);
  126.                                 }
  127.                         }
  128.                 }
  129.                 //执行POST请求
  130.                 $ch = curl_init();
  131.                 curl_setopt($ch, CURLOPT_URL,$url);
  132.                 curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
  133.                 curl_setopt($ch, CURLOPT_POST, 1 );     
  134.                 curl_setopt($ch, CURLOPT_POSTFIELDS, $vars);   
  135.                 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);      
  136.                 $data = curl_exec($ch);        
  137.                 curl_close($ch);      
  138.                 if ($data)   
  139.                         return $data;     
  140.                 else
  141.                         return false;
  142.         }
  143.         /**
  144.          * 使用fsockopen处理POST请求
  145.          */
  146.         else {
  147.                 //组织COOKIE数据
  148.                 $cookie = '';
  149.                 if (!emptyempty($cookies)){
  150.                         if (is_array($cookies)){
  151.                                 $encoded = '';
  152.                                 while (list($k,$v) = each($cookies)) { 
  153.                                         $encoded .= ($encoded ? ";" : ""); 
  154.                                         $encoded .= rawurlencode($k)."=".rawurlencode($v); 
  155.                                 }
  156.                                 $cookie = $encoded;
  157.                         } elseif (is_string($cookies)){
  158.                                 if (strtolower(substr($cookies, 0, 7)) == 'cookie:'){
  159.                                         $cookie = substr($cookies, 7);
  160.                                 } else {
  161.                                         $cookie = $cookies;
  162.                                 }
  163.                         }
  164.                 }
  165.                 //组织POST数据
  166.                 $post = '';
  167.                 if (!emptyempty($vars)){
  168.                         if (is_array($vars)){
  169.                                 $encoded = '';
  170.                                 while (list($k,$v) = each($vars)) { 
  171.                                         $encoded .= ($encoded ? "&" : ""); 
  172.                                         $encoded .= rawurlencode($k)."=".rawurlencode($v); 
  173.                                 }
  174.                                 $post = $encoded;
  175.                         } else {
  176.                                 $post = $vars;
  177.                         }
  178.                 }
  179.                 //处理请求
  180.                 $url = parse_url($url); 
  181.                 if (strtolower($url['scheme']) != 'http' && $url['scheme'] != ''){
  182.                         return false;
  183.                 }
  184.                 if ( !($fp = fsockopen($url['host'], $url['port'] ? $url['port'] : 80, $errno$errstr, 10))){
  185.                         return false;
  186.                 }
  187.                 fputs($fp, sprintf("POST %s%s%s HTTP/1.0/n"$url['path'], $url['query'] ? "?" : ""$url['query'])); 
  188.                 fputs($fp"Host: $url[host]/n"); 
  189.                 fputs($fp"User-Agent: HFHttp-Client/n");
  190.                 if ($cookie != ''){
  191.                         fputs($fp"Cookie: $cookie/n/n"); 
  192.                 }
  193.                 fputs($fp"Content-type: application/x-www-form-urlencoded/n"); 
  194.                 fputs($fp"Content-length: " . strlen($post) . "/n"); 
  195.                 fputs($fp"Connection: close/n/n"); 
  196.                 fputs($fp"$post /n");
  197.                 $ret = '';
  198.                 while (!feof($fp)) { 
  199.                         $c = fgets($fp, 1024);
  200.                         if (preg_match("/^HTTP/"$c) || preg_match("/^P3P/"$c) || preg_match("/^([A-Za-z/-]+)/:/s*(.*)$/"$c)){
  201.                                 continue;
  202.                         }
  203.                         if (trim($c) == ""){
  204.                                 continue;
  205.                         }
  206.                         $ret .= $c
  207.                 } 
  208.                 fclose($fp);
  209.                 return $ret;        
  210.         }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值