PHP利用curl发送HTTP请求的实例代码

这篇文章主要介绍了PHP利用curl发送HTTP请求的实例,文中示例代码非常详细,帮助大家更好的理解和学习,感兴趣的朋友可以了解下。

cURL 函数概述

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

libcurl目前支持http、https、ftp、gopher、telnet、dict、file和ldap协议。libcurl同时也支持HTTPS认证、HTTP POST、HTTP PUT、 FTP 上传(这个也能通过PHP的FTP扩展完成)、HTTP 基于表单的上传、代理、cookies和用户名+密码的认证。

PHP中使用cURL实现Get和Post请求的方法

这些函数在PHP 4.0.2中被引入。

实例

因为需要在 php 开发中对接其它接口需要用 php curl 去对接其它接口 我把他们封装成函数 希望能对大家有所帮助。

这里面是封装好的会自动把 data 进行转成 json 格式,同时解码成 php 数组输出。

  1. <?php
  2. function geturl($url){
  3. $headerArray =array("Content-type:application/json;","Accept:application/json");
  4. $ch = curl_init();
  5. curl_setopt($ch, CURLOPT_URL, $url);
  6. curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
  7. curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
  8. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  9. curl_setopt($ch,CURLOPT_HTTPHEADER,$headerArray);
  10. $output = curl_exec($ch);
  11. curl_close($ch);
  12. $output = json_decode($output,true);
  13. return $output;
  14. }
  15. function posturl($url,$data){
  16. $data = json_encode($data);
  17. $headerArray =array("Content-type:application/json;charset='utf-8'","Accept:application/json");
  18. $curl = curl_init();
  19. curl_setopt($curl, CURLOPT_URL, $url);
  20. curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
  21. curl_setopt($curl, CURLOPT_SSL_VERIFYHOST,FALSE);
  22. curl_setopt($curl, CURLOPT_POST, 1);
  23. curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
  24. curl_setopt($curl,CURLOPT_HTTPHEADER,$headerArray);
  25. curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
  26. $output = curl_exec($curl);
  27. curl_close($curl);
  28. return json_decode($output,true);
  29. }
  30. function puturl($url,$data){
  31. $data = json_encode($data);
  32. $ch = curl_init(); //初始化CURL句柄
  33. curl_setopt($ch, CURLOPT_URL, $url); //设置请求的URL
  34. curl_setopt ($ch, CURLOPT_HTTPHEADER, array('Content-type:application/json'));
  35. curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); //设为TRUE把curl_exec()结果转化为字串,而不是直接输出
  36. curl_setopt($ch, CURLOPT_CUSTOMREQUEST,"PUT"); //设置请求方式
  37. curl_setopt($ch, CURLOPT_POSTFIELDS, $data);//设置提交的字符串
  38. $output = curl_exec($ch);
  39. curl_close($ch);
  40. return json_decode($output,true);
  41. }
  42. function delurl($url,$data){
  43. $data = json_encode($data);
  44. $ch = curl_init();
  45. curl_setopt ($ch,CURLOPT_URL,$put_url);
  46. curl_setopt ($ch, CURLOPT_HTTPHEADER, array('Content-type:application/json'));
  47. curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
  48. curl_setopt ($ch, CURLOPT_CUSTOMREQUEST, "DELETE");
  49. curl_setopt($ch, CURLOPT_POSTFIELDS,$data);
  50. $output = curl_exec($ch);
  51. curl_close($ch);
  52. $output = json_decode($output,true);
  53. }
  54. function patchurl($url,$data){
  55. $data = json_encode($data);
  56. $ch = curl_init();
  57. curl_setopt ($ch,CURLOPT_URL,$url);
  58. curl_setopt ($ch, CURLOPT_HTTPHEADER, array('Content-type:application/json'));
  59. curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
  60. curl_setopt ($ch, CURLOPT_CUSTOMREQUEST, "PATCH");
  61. curl_setopt($ch, CURLOPT_POSTFIELDS,$data); //20170611修改接口,用/id的方式传递,直接写在url中了
  62. $output = curl_exec($ch);
  63. curl_close($ch);
  64. $output = json_decode($output);
  65. return $output;
  66. }
  67. ?>