使用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);
}

你可能感兴趣的:(使用file_get_contents调用HTTPS API)