当前位置:首页 > PHP教程 > php应用 > 列表

PHP 使用 POST 方式向https发送数据请求

发布:smiling 来源: PHP粉丝网  添加日期:2018-09-14 13:42:43 浏览: 评论:0 

例子代码如下:

  1. $data = '{"type":"news", "offset":50, "count":20 }'
  2.  
  3. $access_token = "0erCbg(此处省略112个字)DZrOR0PJBFLhAHAMQW"
  4.  
  5. $url = "https://api.weixin.qq.com/cgi-bin/material/batchget_material?access_token=".$access_token
  6. 2   // 发送数据 
  7.  
  8. $ch = curl_init(); 
  9.  
  10. $timeout = 300; 
  11.  
  12. curl_setopt($ch, CURLOPT_URL, $url); 
  13.  
  14. // curl_setopt($ch, CURLOPT_REFERER, "http://www.phpfensi.com/"); // 伪装来路 
  15.  
  16. curl_setopt($ch, CURLOPT_POST, true); 
  17.  
  18. curl_setopt($ch, CURLOPT_POSTFIELDS, $data); 
  19.  
  20. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
  21.  
  22. curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout); 
  23.  
  24. curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); // URL为SSL时添加这行可解决页面空白 
  25.  
  26. $rs = curl_exec($ch); 
  27.  
  28. curl_close($ch); 
  29. 3   // 输出 
  30.  
  31. $rs = json_decode($rs); 
  32.  
  33. echo '<pre>'
  34.  
  35. print_r($rs); 
  36.  
  37. echo '</pre>'

例子:方法1感觉也很笨拙,似乎也很难满足我的需求,最后忘记在哪个英文网站上找到了下面这个方法:

  1. function do_post_request($url$data$optional_headers = null) 
  2.  
  3.  { 
  4.  
  5.     $params = array('http' => array
  6.  
  7.                  'method' => 'POST'
  8.  
  9.                  'content' => $data 
  10.  
  11.               )); 
  12.  
  13.     if ($optional_headers !== null) { 
  14.  
  15.        $params['http']['header'] = $optional_headers
  16.  
  17.     } 
  18.  
  19.     $ctx = stream_context_create($params); 
  20.  
  21.     $fp = @fopen($url'rb', false, $ctx); 
  22.  
  23.     if (!$fp) { 
  24.  
  25.        throw new Exception("Problem with $url, $php_errormsg"); 
  26.  
  27.     } 
  28.  
  29.     $response = @stream_get_contents($fp); 
  30.  
  31.     if ($response === false) { 
  32.  
  33.        throw new Exception("Problem reading data from $url, $php_errormsg"); 
  34.  
  35.     } 
  36.  
  37.     return $response
  38.  
  39.  }  

试用了一下,感觉效果非常好,简洁,通用,而且返回的内容仅仅是Body中内容.

Tags: 方式 数据

分享到: