php使用curl获取https请求的方法

本文实例讲述了php使用curl获取https请求的方法。分享给大家供大家参考。具体分析如下:

今日在做一个项目,需要curl获取第三方的API,对方的API是https方式的。
之前使用curl能获取http请求,但今天获取https请求时,出现了以下的错误提示:证书验证失败。

SSL certificate problem, verify that the CA cert is OK. Details: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed

解决方法为在curl请求时,加入:

365bet体育在线官网_365体育投注平台_365在线体育消息如下:

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // 跳过证书检查?
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, true);? // 从证书中检查SSL加密算法是否存在

curl https请求365bet体育在线官网_365体育投注平台_365在线体育消息

365bet体育在线官网_365体育投注平台_365在线体育消息如下:

/** curl 获取 https 请求
* @param String $url??????? 请求的url
* @param Array? $data?????? 要发送的数据
* @param Array? $header???? 请求时发送的header
* @param int??? $timeout??? 超时时间,默认30s
*/?
function curl_https($url, $data=array(), $header=array(), $timeout=30){?
??? $ch = curl_init();?
??? curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // 跳过证书检查?
??? curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, true);? // 从证书中检查SSL加密算法是否存在?
??? curl_setopt($ch, CURLOPT_URL, $url);?
??? curl_setopt($ch, CURLOPT_HTTPHEADER, $header);?
??? curl_setopt($ch, CURLOPT_POST, true);?
??? curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));?
??? curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);??
??? curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);?
?
??? $response = curl_exec($ch);?
?
??? if($error=curl_error($ch)){?
??????? die($error);?
??? }?
?
??? curl_close($ch);?
?
??? return $response;?
?
}?
?
// 调用?
$url = 'https://www.example.com/api/message.php';?
$data = array('name'=>'fdipzone');?
$header = array();?
?
$response = curl_https($url, $data, $header, 5);?
?
echo $response;?
?>

希望本文所述对大家的php程序设计有所帮助。

时间: 2015-02-08

php中http与https跨域共享session的解决方法

遇到了HTTP.HTTPS协议下session共享解决cookie失效的问题,这里提供一个临时解决办法. 实现原理:把session id设置到本地的cookie. 如下: 复制365bet体育在线官网_365体育投注平台_365在线体育消息 365bet体育在线官网_365体育投注平台_365在线体育消息如下: $currentSessionID = session_id(); session_id($currentSessionID ); 以下是实现365bet体育在线官网_365体育投注平台_365在线体育消息,分为http与https两部分. 1,http部分: 复制365bet体育在线官网_365体育投注平台_365在线体育消息 365bet体育在线官网_365体育投注平台_365在线体育消息如下:

php使用curl打开https网站的方法

本文实例讲述了php使用curl打开https网站的方法.分享给大家供大家参考.具体实现方法如下: $url = 'https://www.google.com.hk'; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_HEADER, false); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CU

php抓取https的内容的365bet体育在线官网_365体育投注平台_365在线体育消息

直接用file_get_contents,会报错: 复制365bet体育在线官网_365体育投注平台_365在线体育消息 365bet体育在线官网_365体育投注平台_365在线体育消息如下: $url = (https://xxx.com"); file_get_contents($url); 错误: Warning: file_get_contents(https://xxx.com) [function.file-get-contents]: failed to open stream: No such file or directory in D:wampwwwgrabber_clientindex.ph

PHP实现抓取HTTPS内容

最近在研究Hacker News API时遇到一个HTTPS问题.因为所有的Hacker News API都是通过加密的HTTPS协议访问的,跟普通的HTTP协议不同,当使用PHP里的函数 file_get_contents() 来获取API里提供的数据时,出现错误,使用的365bet体育在线官网_365体育投注平台_365在线体育消息是这样的:

php使用curl访问https示例分享

为方便说明,先上365bet体育在线官网_365体育投注平台_365在线体育消息吧 复制365bet体育在线官网_365体育投注平台_365在线体育消息 365bet体育在线官网_365体育投注平台_365在线体育消息如下: /** ?* curl POST ?* ?* @param?? string? url ?* @param?? array?? 数据 ?* @param?? int???? 请求超时时间 ?* @param?? bool??? HTTPS时是否进行严格认证 ?* @return? string ?*/? function curlPost($url, $data = array(), $timeout = 30, $CA = true){ $cace

PHP中file_get_contents函数抓取https地址出错的解决方法(两种方法)

方法一: 在php中,抓取https的网站,提示如下的错误内容: Warning: file_get_contents() [function.file-get-contents]: failed to open stream: Invalid argument in I:Webmyphpa.php on line 16 打开php.ini文件找到 ;extension=php_openssl.dll ,去掉双引号";" ,重启web服务器即可. apache服务器的话,可以同时启用m

PHP抓取HTTPS内容和错误处理的方法

问题 在研究Hacker News API的时候遇到一个HTTPS问题.因为所有的Hacker News API都是通过加密的HTTPS协议访问的,跟普通的HTTP协议不同,当使用PHP里的函数 file_get_contents() 来获取API里提供的数据时,出现错误 使用的365bet体育在线官网_365体育投注平台_365在线体育消息是这样的: 当运行上面的365bet体育在线官网_365体育投注平台_365在线体育消息是遇到下面的错误提示: PHP Warn

php之curl实现http与https请求的方法

本文实例讲述了php之curl实现http与https请求的方法,分享给大家供大家参考.具体如下: 通常来说,php的curl函数组可以帮助我们把机器伪装成人的行为来抓取网站,下面来分享两个例子,一个是访问http网页,一个访问https网页,一起来看一下. 每次要使用curl的时候,总要查一堆资料. 现在将常用的几句保存下来,省的每次都去谷歌. 常规curl请求: 复制365bet体育在线官网_365体育投注平台_365在线体育消息 365bet体育在线官网_365体育投注平台_365在线体育消息如下: $url = 'http://www.jb51.net'; $curl = curl_init(); cur

如何使用php判断服务器是否是HTTPS连接

复制365bet体育在线官网_365体育投注平台_365在线体育消息 365bet体育在线官网_365体育投注平台_365在线体育消息如下: if ($_SERVER['HTTPS'] != "on") {?echo "This is not HTTPS";}else{?echo "This is HTTPS";}if ($_SERVER['HTTPS'] != "on") {?echo "This is not HTTPS";}else{?echo "This is HTTPS";}

php curl 获取https请求的2种方法

今天一个同事反映,使用curl发起https请求的时候报错:"SSL certificate problem, verify that the CA cert is OK. Details: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed" 很明显,验证证书的时候出现了问题. 使用curl如果想发起的https请求正常的话有2种做法: 方法一.设定为不验证证书和host.

JS获取地址栏参数的两种方法(简单实用)

js获取地址栏参数的方法有两种:第一种,采用正则表达式获取地址栏参数,第二种,是比较传统的方法,在这小编给大家强烈推荐使用第一种方法,既方便有实用,具体实现过程请看下文详述. 方法一:采用正则表达式获取地址栏参数:( 强烈推荐,既实用又方便!) function GetQueryString(name) { var reg = new RegExp("(^|&)"+ name +"=([^&]*)(&|$)"); var r = window

php获取POST数据的三种方法实例详解

php获取POST数据的三种方法 方法一,$_POST $_POST或$_REQUEST存放的是PHP以key=>value的形式格式化以后的数据. 方法二,使用file_get_contents("php://input") 对于未指定 Content-Type 的POST数据,则可以使用file_get_contents("php://input");来获取原始数据. 事实上,用PHP接收POST的任何数据均使用本方法.而不用考虑Content-Type,

java发送http get请求的两种方法(总结)

长话短说,废话不说 一.第一种方式,通过HttpClient方式,365bet体育在线官网_365体育投注平台_365在线体育消息如下: public static String httpGet(String url, String charset) throws HttpException, IOException { String json = null; HttpGet httpGet = new HttpGet(); // 设置参数 try { httpGet.setURI(new URI(url)); } catch (URISyntaxExc

java 获取HttpRequest Header的几种方法(必看篇)

在开发应用程序的过程中,如果有多个应用,通常会通过一个portal 门户来集成,这个portal? 是所有应用程序的入口,用户一旦在portal 登录之后,进入另外一个系统,就需要类似的单点登录(SSO). 进入各个子系统的时候,就不需要再次登录, 当然类似的功能,你可以通过专业的单点登录软件来实现,也可以自己写数据库token 等方式来实现.其实还有一个比较简单的方法,就是通过 portal 封装已经登录过的用户的消息,写到http header 之中,然后把请求forward 到各个子系统中

PHP获取POST数据的几种方法汇总

一.PHP获取POST数据的几种方法 方法1.最常见的方法是:$_POST['fieldname']; 说明:只能接收Content-Type: application/x-www-form-urlencoded提交的数据 解释:也就是表单POST过来的数据 方法2.file_get_contents("php://input"); 说明: 允许读取 POST 的原始数据. 和 $HTTP_RAW_POST_DATA 比起来,它给内存带来的压力较小,并且不需要任何特殊的 php.ini

java 获取mac地址的两种方法(推荐)

我在网上找了一下获取mac地址的方法,找了两种比较不太一样的方法. 第一种 public static void main(String[] args) throws Exception { InetAddress ia = InetAddress.getLocalHost(); System.out.println(getMACAddress(ia)); } private static String getMACAddress(InetAddress ia) throws Exception

java发送url请求获取返回值的二种方法

下面提供二种方法会使用java发送url请求,并获取服务器返回的值 第一种方法: 复制365bet体育在线官网_365体育投注平台_365在线体育消息 365bet体育在线官网_365体育投注平台_365在线体育消息如下: import org.apache.http.HttpEntity;import org.apache.http.HttpResponse;import org.apache.http.NameValuePair;import org.apache.http.client.HttpClient;import org.apache.http.client.entity.UrlEncodedFor

php中使用Curl、socket、file_get_contents三种方法POST提交数据

抓取远程内容,之前一直都在用file_get_content函数,其实早就知道有curl这么一个好东西的存在,但是看了一眼后感觉使用颇有些复杂,没有file_get_content那么简单,再就是需求也不大,所以没有学习使用curl.直到最近,要做一个网页小偷程序的时候才发现file_get_content已经完全不能满足需求了.我觉得,在读取远程内容的时候,file_get_content除了使用比curl便捷以外,其他都没有curl好. php中curl和file_get_content的一