php 中的 curl 函数

比眉伴天荒 2022-08-08 00:52 287阅读 0赞

1. curl的安装配置:

Linux下的安装:
http://php.net/manual/zh/curl.setup.php
windows下的安装:
开启:
extension=php_curl.dll //注意对应版本的 dll 文件

2. curl 使用步骤

  1. <?php
  2. //1. 初始化
  3. $curl = curl_init();
  4. //2. 配置相关参数信息 curl_setopt
  5. curl_setopt($curl, 常量参数,可选参数);
  6. //3. 执行
  7. $res = curl_exec($curl);
  8. //4. 关闭 链接
  9. curl_close($curl);
  10. ?>

具体的参数使用信息 请参阅:http://php.net/manual/zh/book.curl.php

3. 部分使用案例

3.1 使用https 时 需要对证书认证进行过滤

  1. <?php
  2. $this->curl->options(array(CURLOPT_SSL_VERIFYPEER => false, CURLOPT_SSL_VERIFYHOST => false));
  3. ?>

3.2 使用 body(一般对于java 的认证方式) 传输接口时 使用下面的方法

  1. /**
  2. * 普通函数传递方式(已做证书跳过)
  3. * 调用基础:
  4. * $url = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?type=jsapi&access_token=$accessToken";
  5. * $res = json_decode($this->httpGet($url));
  6. */
  7. private function httpGet($url) {
  8. $curl = curl_init();
  9. curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
  10. curl_setopt($curl, CURLOPT_TIMEOUT, 500);
  11. curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
  12. curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
  13. curl_setopt($curl, CURLOPT_URL, $url);
  14. $res = curl_exec($curl);
  15. curl_close($curl);
  16. return $res;
  17. }
  18. /**
  19. * java 的body 认证传输方式
  20. * 调用基础:
  21. * $result = list($return_code, $return_content) = $this->http_post_data($url, json_encode(array("Key"=>$pass)));
  22. * $res = json_decode($return_content);
  23. * $return_code = $res->rspMsg;
  24. */
  25. public function http_post_data($url, $data_string) {
  26. $ch = curl_init();
  27. curl_setopt($ch, CURLOPT_POST, 1);
  28. curl_setopt($ch, CURLOPT_URL, $url);
  29. curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
  30. curl_setopt($ch, CURLOPT_HTTPHEADER, array(
  31. 'Content-Type: application/json; charset=utf-8',
  32. 'Content-Length: ' . strlen($data_string))
  33. );
  34. ob_start();
  35. curl_exec($ch);
  36. $return_content = ob_get_contents();
  37. ob_end_clean();
  38. $return_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
  39. return array($return_code, $return_content);
  40. }

3.3 CI框架中 CURL的调试 方式

  1. $this->curl->debug();

3.4 CURL 模拟文件上传 (微信声音文件上传)

  1. $soundurl = '你本地声音路径的绝对地址 如:/data/sound/ins.amr';
  2. //初始化
  3. $ch = curl_init();
  4. //文件路径地址
  5. $furl = "@".$soundurl;
  6. $post_data = array (
  7. "media" => $furl
  8. );
  9. //提交文件地址
  10. $url = "http://file.api.weixin.qq.com/cgi-bin/media/upload?access_token=".$token."&type=voice";
  11. //设置变量
  12. curl_setopt($ch, CURLOPT_URL, $url);
  13. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//执行结果是否被返回,0是返回,1是不返回
  14. curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
  15. //执行并获取结果
  16. $output = curl_exec($ch);
  17. if($outopt === FALSE){
  18. echo "<br/>","cUrl Error:".curl_error($ch);
  19. }
  20. curl_close($ch);
  21. $obj = json_decode($output);

3.5 声音文件的本地 下载

  1. $soundfile = $this->curl->simple_get("http://file.api.weixin.qq.com/cgi-bin/media/get?access_token=".$token."&media_id=".$soundid);
  2. $soundurl = "./sound/".$id.".amr";
  3. file_put_contents($soundurl, $soundfile);

发表评论

表情:
评论列表 (有 0 条评论,287人围观)

还没有评论,来说两句吧...

相关阅读

    相关 PHP cURL 函数

    概述 PHP支持的由Daniel Stenberg创建的libcurl库允许你与各种的服务器使用各种类型的协议进行连接和通讯。 libcurl目前支持http、http

    相关 PHP cURL 函数

    概述 PHP支持的由Daniel Stenberg创建的libcurl库允许你与各种的服务器使用各种类型的协议进行连接和通讯。 libcurl目前支持http、http

    相关 PHP70CURL函数详解

    在PHP 编程开发中,Curl 函数是一个非常重要的工具,它能够让我们以编程的方式发送和接收网络请求,以及对于网络请求的返回内容进行处理。Curl 函数在 PHP 7.0 版本

    相关 PHP curl发送数据 函数

    在项目中经常会调用一些网络接口,返回的数据一般为json 或者 xml 为主, 这个函数就是利用 curl 发送网络请求 获得数据,可以根据实际情况改编。 // 注意cook