简体   繁体   English

使用file_get_contents和cURL从URL获取数据

[英]get data from URL using file_get_contents and cURL

I am using codeigniter framework. 我正在使用codeigniter框架。

I want to retrieve the data from the URL provided. 我想从提供的URL检索数据。 I already tried this answers: tried . 我已经尝试过这样的答案: 尝试

Problem is that when i access the url that time it is printing the data. 问题是,当我访问URL时,它正在打印数据。 but when i try it with file_get_contents function, it is not going to print any data. 但是当我尝试使用file_get_contents函数时,它不会打印任何数据。

<?php
$url ='https://test.com/getSessionData';
$test = file_get_contents($url);
$t = json_decode($test);
var_dump($t);
?>

That url returns json data like: 该网址返回json数据,例如:

{
    "email": "test@t.com",
    "LOGIN": true,
    "name": "testing",
    "logintype": "ca"
}

Also tried using cURL : 还尝试使用cURL

<?php
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);
$curl_response = curl_exec($curl);
curl_close($curl);
$curl_jason = json_decode($curl_response, true);
print_r($curl_jason);
?>

But it is not working and it returns empty. 但是它不起作用并且返回空。 i have checked that allow_url_fopen is on . 我已经检查了allow_url_fopen是否on

This is the class I said: 这是我说的课程:

/**
 * Created by PhpStorm.
 * User: rain
 * Date: 15/11/2
 * Time: 下午4:08
 */
class MyCurlLibrary{
    public static function getRequest($url,Array $data=array(),$isNeedHeader=0){
        $ch = curl_init();
        if($data){
            $bindQuery = http_build_query($data);
            $url.="?".$bindQuery;
        }
        curl_setopt($ch, CURLOPT_URL, $url);
        //if need return
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        //this is for https
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
        curl_setopt($ch, CURLOPT_HEADER, $isNeedHeader);//if contains header 
        //this is for web redirect problem
        //curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);

        $output = curl_exec($ch);
        curl_close($ch);
        return $output;
    }

    public static function postRequest($url,Array $data=array()){
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        // post Data
        curl_setopt($ch, CURLOPT_POST, 1);
        // post variable
        if($data){
            curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
        }
        $output = curl_exec($ch);
        curl_close($ch);
        //return data
        return $output;
    }

}

/**
 * sample
 *
 * //test Data
    $url = "http://localhost:8080/test/test.php";//改文件有代码  print_r($_GET);         print_r($_POST)
    $data = array('a'=>'b','c'=>'d',8=>666,888);
    //test get function
    $result = MyCurl::getRequest($url,$data);
    //test post function
    $result = MyCurl::postRequest($url,$data);
    //print result
    var_dump($result);
 *
 *
 */

This might helpful 这可能会有所帮助

http://php.net/manual/en/migration56.openssl.php http://php.net/manual/en/migration56.openssl.php

So code looks like this: 所以代码看起来像这样:

<?php

$arrContextOptions=array(
    "ssl"=>array(
        "cafile" => "/path/to/bundle/ca-bundle.crt",
        "verify_peer"=>false,
        "verify_peer_name"=>false,
    ),
);


$response = file_get_contents("https://test.com/getSessionData", false, stream_context_create($arrContextOptions));

echo $response; ?>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM