• PHP中使用CURL实现Get和Post请求方法


    1.cURL介绍

      cURL 是一个利用URL语法规定来传输文件和数据的工具,支持很多协议,如HTTP、FTP、TELNET等。最爽的是,PHP也支持 cURL 库。本文将介绍 cURL的一些高级特性,以及在PHP中如何运用它。

    2.基本结构

      在学习更为复杂的功能之前,先来看一下在PHP中建立cURL请求的基本步骤:

      (1)初始化

        curl_init()

      (2)设置变量

        curl_setopt()
    。最为重要,一切玄妙均在此。有一长串cURL参数可供设置,它们能指定URL请求的各个细节。要一次性全部看完并理解可能比较困难,所以今天我们只试一下那些更常用也更有用的选项。

      (3)执行并获取结果

        curl_exec()

      (4)释放cURL句柄

        curl_close()

    3.cURL实现Get和Post

    3.1 Get方式实现

     //初始化
      $ch = curl_init();
    
      //设置选项,包括URL
      curl_setopt($ch, CURLOPT_URL, "http://www.jb51.net");
      curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
      curl_setopt($ch, CURLOPT_HEADER, 0);
    
      //执行并获取HTML文档内容
      $output = curl_exec($ch);
    
      //释放curl句柄
      curl_close($ch);
    
      //打印获得的数据
      print_r($output);
    

    3.2 Post方式实现

      $url = "http://localhost/web_services.php";
      $post_data = array ("username" => "bob","key" => "12345");
    
      $ch = curl_init();
    
      curl_setopt($ch, CURLOPT_URL, $url);
      curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
      // post数据
      curl_setopt($ch, CURLOPT_POST, 1);
      // post的变量
      curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
    
      $output = curl_exec($ch);
      curl_close($ch);
    
      //打印获得的数据
      print_r($output);
    

    以上方式获取到的数据是json格式的,使用json_decode函数解释成数组。

      (output_array = json_decode()output,true);

      如果使用json_decode($output)解析的话,将会得到object类型的数据。
      

    function httpCurl($url,$data=null)
    {
    	//初始化
    	$ch = curl_init();
    
    	//设置选项,包括URL
    	curl_setopt($ch,CURLOPT_URL,$url);
    	curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
    	if(!empty($data)){
    		curl_setopt($ch,CURLOPT_POST,1);
    		curl_setopt($ch,CURLOPT_POSTFIELDS,$data);
    	}
    	$output = curl_exec($ch);
    	curl_close($ch);
    
    	return $output;
    }
    
    当请求https的数据时,会要求证书,这时候,加上下面这两个参数,规避ssl的证书检查
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); // https请求 不验证证书和hosts
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
    
  • 相关阅读:
    Java反射(2)访问字段(Field)
    《编程珠玑》中“位图排序”引发的一系列实验
    Java : 传值or传引用?
    const 指针
    三种数据库访问——Spring3.2 + Hibernate4.2
    三种数据库访问——Spring JDBC
    数据库连接池:Druid
    三种数据库访问——原生JDBC
    介绍4款json的java类库 及 其性能测试
    云存储(Swift+Keystone)部署策略
  • 原文地址:https://www.cnblogs.com/niuben/p/11192702.html
Copyright © 2020-2023  润新知