phpcurlhttps请求
Ⅰ php用curl时,HTTP链接正常,HTTPS时,获取不到数据
https 需要认证。
简易方法 (不认证,不安全)
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
安全方法(认证,安全):
用firefox查出网站的CA certificate,下戴, 然后
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
curl_setopt($ch, CURLOPT_CAINFO, getcwd() . "/CAcerts/BuiltinObjectToken-EquifaxSecureCA.crt");
Ⅱ 对于https协议的网站,可以用php 的curl来模拟get请求和post请求吗,能得到返回值吗
可以。
CURLOPT_PROTOCOLS
CURLPROTO_* 的位域指。如果被启用,位域值会限定libcurl在传输过程中有哪些可使用的协议。这将允许你在编译libcurl时支持众多协议,但是限制只是用它们中被允许使用的一个子集。默认libcurl将会使用全部它支持的协议。参见 CURLOPT_REDIR_PROTOCOLS .
可用的协议选项为:CURLPROTO_HTTP、CURLPROTO_HTTPS、CURLPROTO_FTP、CURLPROTO_FTPS、CURLPROTO_SCP、CURLPROTO_SFTP、CURLPROTO_TELNET、CURLPROTO_LDAP、CURLPROTO_LDAPS、CURLPROTO_DICT、CURLPROTO_FILE、CURLPROTO_TFTP、CURLPROTO_ALL
对了,可定能得到返回值
Ⅲ AMH 面板curl 请求https页面服务器报404错误
那说明WEB目录在HTTPS配置中没有具体绑定。或者文件不支持HTTPS调用。
Ⅳ php curl调用http与https有何不同
https要求有证书,通常可以通过
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,false);//SSL报错时使用
curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,false);//SSL报错时使用
对证书进行屏蔽。
如果是你自己本身需要验证证书,那就不能屏蔽这里了。
更多PHPcURL内容请参考我的博客《PHPcURL实现模拟登录与采集使用方法详解教程》
Ⅳ PHP使用curl访问https页面的问题
你试试 curl_multi_getcontent( resource $ch ) 我记得这个东西是要接受的 忘了是在传过去的页面还是本页面
Ⅵ 如何使用curl获取https请求
解决方法为在curl请求时,加入:
复制代码代码如下:
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // 跳过证书检查
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, true); // 从证书中检查SSL加密算法是否存在
curl https请求代码
复制代码代码如下:
<?php
/** 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程序设计有所帮助。
Ⅶ 如何通过php发送https Get请求
我封装了一个Curl类,你看能不能用的上
classHttp{
publicfunctioncurlRequest($url,$postData='',$timeOut=10,$httpHeader=array()){
$handle=curl_init();
curl_setopt($handle,CURLOPT_URL,$url);
if($httpHeader){
curl_setopt($handle,CURLOPT_HTTPHEADER,$httpHeader);
}
curl_setopt($handle,CURLOPT_RETURNTRANSFER,true);
curl_setopt($handle,CURLOPT_HEADER,0);
curl_setopt($handle,CURLOPT_TIMEOUT,$timeOut);
curl_setopt($handle,CURLOPT_FOLLOWLOCATION,1);
curl_setopt($handle,CURLOPT_SSL_VERIFYPEER,false);
curl_setopt($handle,CURLOPT_SSL_VERIFYHOST,false);
curl_setopt($handle,CURLOPT_USERAGENT,'Mozilla/5.0(Macintosh;IntelMacOSX10_7_2)AppleWebKit/537.36(KHTML,likeGecko)Chrome/27.0.1453.93Safari/537.36');
curl_setopt($handle,CURLOPT_ENCODING,'gzip,deflate,sdch');
if(!empty($postData)){
curl_setopt($handle,CURLOPT_POST,1);
curl_setopt($handle,CURLOPT_POSTFIELDS,$postData);
}
$result['response']=curl_exec($handle);
$result['httpStatus']=curl_getinfo($handle,CURLINFO_HTTP_CODE);
$result['fullInfo']=curl_getinfo($handle);
$result['errorMsg']='';
$result['errorNo']=0;
if(curl_errno($handle)){
$result['errorMsg']=curl_error($handle);
$result['errorNo']=curl_errno($handle);
}
curl_close($handle);
return$result;
}
}
$curl=newHttp();
$strUrl='https://www..com?search=keywords';
$arrResponse=$curl->curlRequest($strUrl);//这就是请求结果
Ⅷ PHP使用CURL请求https的微信统一下单接口时报错,同样的代码我在另一台机器上运行是正常的
我也遇到了同样的问题,只要是走微信,偶尔都会请求不到,原来是正常的。今天排查了一天,终于找到了原因所在。
centos原生用的NSS,而不是OpenSSL,curl调用NSS库请求https时偶尔会出现请求不到的情况。
解决方案:
参考网址:网页链接
按步骤完成后记得重启 php-fpm和nginx
Ⅸ 如何通过php发送https Get请求
<?php
//使用file_get_contents()发送GET请求非常简单
$url="http://www.caorongan.com";//请求的地址
$response=file_get_contents($url);//发送请求
echo$response;//打印结果
Ⅹ php 用curl获取https地址
你就算是
注释1和注释2都没有他照样会有数据输出
因为 他默认是输出你获得到的数据
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//输出内容为字符串
你要加上上面这一句话
这样就不会输出获取到的数据