使用file_get_contents调用HTTPS API

问题描述

正式服使用file_get_contents访问API(HTTPS)接口时返回false,而测试服使用正常。

排查原因

正式服未安装php_openssl.dll扩展。

解决方案

1.安装php_openssl.dll扩展

2.使用curl进行API调用

// 使用file_get_contents()进行HTTPS API调用
public function api() {
  $option = array (
  'http' => array (
    'header' => "Your_Header_Name: Your_Header_Value"
    )
  );
  $url = 'https://www.baidu.com';
  $res = file_get_contents ( $url, false, stream_context_create ( $option ) );
  $result = json_decode ( $res, true );
}
// 使用curl()进行HTTPS API调用
public function api() {
  $url = 'https://www.baidu.com'
  $curl = curl_init();
  curl_setopt($curl, CURLOPT_URL, $site.$url);
  curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
  curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
  curl_setopt($curl, CURLOPT_HTTPHEADER, array(
    'Your_Header_Name: Your_Header_Value'
  ));
  if (!empty($data)) {
    curl_setopt($curl, CURLOPT_POST, 1);
    curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
  }
  curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
  // 结果为json字符串
  $info = curl_exec($curl);
  curl_close($curl);
  $result = json_decode($info,true);
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,308评论 19 139
  • php.ini设置,上传大文件: post_max_size = 128Mupload_max_filesize ...
    bycall阅读 11,777评论 3 64
  • 最近因需要尝试编译了一次Vbox,官方论坛上只有32位环境的编译教程,所以这次在64位、特别是中文环境上遇到不少坑...
    MushiUta阅读 11,010评论 0 6
  • Welcome 目前网络上充斥着大量的陈旧信息,让PHP新手误入歧途,传播着错误的实践和糟糕的代码,这必须得到纠正...
    layjoy阅读 21,774评论 7 118
  • 最近在看《大数据时代》,里面提到一句话,令人印象深刻。人类存储信息量的增长速度比世界经济的增长速度快4倍。我们处在...
    小木木1964阅读 1,605评论 0 0