Blogger Information
Blog 119
fans 3
comment 1
visits 94355
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
使用 curl 扩展获取其他服务器资源
赵大叔
Original
803 people have browsed it

使用 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>

Correcting teacher:PHPzPHPz

Correction status:qualified

Teacher's comments:
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post