簡體   English   中英

使用file_get_contents和cURL從URL獲取數據

[英]get data from URL using file_get_contents and cURL

我正在使用codeigniter框架。

我想從提供的URL檢索數據。 我已經嘗試過這樣的答案: 嘗試

問題是,當我訪問URL時,它正在打印數據。 但是當我嘗試使用file_get_contents函數時,它不會打印任何數據。

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

該網址返回json數據,例如:

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

還嘗試使用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);
?>

但是它不起作用並且返回空。 我已經檢查了allow_url_fopen是否on

這是我說的課程:

/**
 * 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);
 *
 *
 */

這可能會有所幫助

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

所以代碼看起來像這樣:

<?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