博主信息
博文 119
粉丝 3
评论 1
访问量 121204
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
使用 curl 扩展获取其他服务器资源
赵大叔
原创
989人浏览过

使用 curl 扩展获取其他服务器资源

curl 简介

PHP 所支持的 libcurl 库能够连接通讯各种服务器、使用各种协议。
libcurl 目前支持的协议有 http、https、ftp、gopher、telnet、dict、file、ldap, 同时也支持 HTTPS 证书、HTTP POST、HTTP PUT、 FTP 上传 、HTTP 基于表单的上传、代理、cookies、用户名+密码的认证。

需求

PHP 版本>=7.10.5,并且安装 libcurl 包才能使用 cURL 函数。

配置相关的预定义常量

更多请参考:https://www.php.net/manual/zh/function.curl-setopt.php

序号 预定义常量 描述
1 CURLOPT_URL 需要获取的 URL 地址,也可以在 curl_init($url) 初始化会话的时候直接传参设置。
2 CURLOPT_HTTPGET true 时会设置 HTTP 的 method 为 GET,由于默认是 GET,所以只有 method 被修改时才需要这个选项。
3 CURLOPT_HEADER true,启用时会将头文件的信息作为数据流输出。
4 CURLOPT_RETURNTRANSFER 设置为 true 或 1 表示如果请求成功只将结果返回,不自动输出任何内容。

cURL 函数的使用步骤

  1. curl_init() 初始化 cURL 会话

  2. 通过 curl_setopt() 设置需要的全部选项

  3. 使用 curl_exec() 来执行会话

  4. 执行完会话后使用 curl_close() 关闭会话

请求接口数据:

  1. <?php
  2. // echo phpinfo();
  3. $url = 'http://apis.juhe.cn/simpleWeather/query?';
  4. $key = '99ab468953521e0fa2a28ee905871cc5';
  5. $city = '上海';
  6. // http_build_query 将数组格式化成url
  7. $params = http_build_query(["key" => $key, "city" => $city]);
  8. // var_dump($params);
  9. $curl = curl_init(); // 返回一个curl句柄资源类型
  10. // curl_setopt()来设置各项设置
  11. curl_setopt($curl, CURLOPT_URL, $url . $params);
  12. curl_setopt($curl, CURLOPT_POST, 1);
  13. // true,启用时会将头文件的信息作为数据流输出。
  14. curl_setopt($curl, CURLOPT_HEADER, false);
  15. // 设置为true或1表示如果请求成功只将结果返回,不自动输出任何内容。如果想拿到数据转成数组,只能以数据流的方式,不能让她输出结果
  16. curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
  17. $res = curl_exec($curl);
  18. $res = json_decode($res, true);
  19. echo '<pre>';
  20. print_r($res);
  21. // 需要关闭数据会话
  22. curl_close($curl);
  23. // echo $res["reason"] . "</br>";
  24. if (!$res["error_code"] == '') {
  25. switch ($res["error_code"]) {
  26. case '207301':
  27. echo '错误的查询城市名';
  28. break;
  29. case '207302':
  30. echo '查询不到该城市的相关信息';
  31. break;
  32. case '10012':
  33. echo '请求超过次数限制';
  34. break;
  35. case '10013':
  36. echo '测试KEY超过请求限制';
  37. break;
  38. default:
  39. echo '网络错误,请重试';
  40. break;
  41. }
  42. }
  43. ?>
  44. <!DOCTYPE html>
  45. <html lang="en">
  46. <head>
  47. <meta charset="UTF-8">
  48. <meta http-equiv="X-UA-Compatible" content="IE=edge">
  49. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  50. <title>天气情况</title>
  51. </head>
  52. <style type="text/css">
  53. table,table tr th, table tr td {border:1px solid #e6e6e6;}
  54. thead{background-color: #f2f2f2;}
  55. tr{text-align: center;height: 42px;}
  56. tr:hover{background-color: #f2f2f2;}
  57. input,textarea{
  58. box-sizing: border-box;
  59. -webkit-box-sizing: border-box;
  60. -moz-box-sizing: border-box;
  61. }
  62. </style>
  63. <body>
  64. <table cellspacing="0">
  65. <h2><?= $city ?>当前天气信息</h2>
  66. <thead>
  67. <tr>
  68. <th>温度</th>
  69. <th>湿度</th>
  70. <th>天气情况</th>
  71. <th>天气标识id</th>
  72. <th>风向</th>
  73. <th>风力</th>
  74. <th>空气质量指数</th>
  75. </tr>
  76. </thead>
  77. <tbody>
  78. <tr>
  79. <td><?= $res['result']['realtime']['temperature'] ?></td>
  80. <td><?= $res['result']['realtime']['humidity'] ?></td>
  81. <td><?= $res['result']['realtime']['info'] ?></td>
  82. <td><?= $res['result']['realtime']['wid'] ?></td>
  83. <td><?= $res['result']['realtime']['direct'] ?></td>
  84. <td><?= $res['result']['realtime']['power'] ?></td>
  85. <td><?= $res['result']['realtime']['aqi'] ?></td>
  86. </tr>
  87. </tbody>
  88. </table>
  89. <table>
  90. <h2><?= $city ?>未来5天天气信息</h2>
  91. <thead>
  92. <tr>
  93. <th>温度</th>
  94. <th>湿度</th>
  95. <th>天气情况</th>
  96. <th>天气标识id</th>
  97. <th>风向</th>
  98. <th>风力</th>
  99. <th>空气质量指数</th>
  100. </tr>
  101. </thead>
  102. <tbody>
  103. <?php foreach($res['result']['future'] as $val):?>
  104. <tr>
  105. <td><?= $val['temperature'] ?></td>
  106. <td><?= $val['humidity'] ?></td>
  107. <td><?= $val['info'] ?></td>
  108. <td><?php echo '白天:' .$val['wid']['day'] .'<br>'; echo '夜间:' .$val['wid']['night'] ?></td>
  109. <td><?= $val['direct'] ?></td>
  110. <td><?= $val['power'] ?></td>
  111. <td><?= $val['aqi'] ?></td>
  112. </tr>
  113. <?php endforeach?>;
  114. </tbody>
  115. </table>
  116. </body>
  117. </html>

批改老师:PHPzPHPz

批改状态:合格

老师批语:
本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
作者最新博文
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学