繁体   English   中英

PHP奇怪的代码行为

[英]PHP Strange code behaviour

这是我的goo.gl网址缩短程序类。 像Googl :: shorten(“ http://google.com ”)一样使用它。 我不明白为什么它返回Null。 我究竟做错了什么?

<?php
define('GOOGLE_API_KEY', 'AIzaSyBS7WpEDiSZ91p-SJoNWOkKxqveb1sfpf4');
define('GOOGLE_ENDPOINT', 'https://www.googleapis.com/urlshortener/v1');
class Googl {

  static function shorten($longUrl)
    {
        // initialize the cURL connection
        $ch = curl_init(
            sprintf('%s/url?key=%s', GOOGLE_ENDPOINT, GOOGLE_API_KEY)
        );

        // tell cURL to return the data rather than outputting it
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

        // create the data to be encoded into JSON
        $requestData = array(
            'longUrl' => $longUrl
        );

        // change the request type to POST
        curl_setopt($ch, CURLOPT_POST, true);

        // set the form content type for JSON data
        curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-type: application/json'));

        // set the post body to encoded JSON data
        curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($requestData));

        // perform the request
        $result = curl_exec($ch);
        curl_close($ch);

        // decode and return the JSON response
        return json_decode($result, true);
    }

}

?>

您需要添加此参数。( 由于googleapis在HTTPs上运行

    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

然后打电话

$res= Googl::shorten('http://stackoverflow.com');
var_dump($res);

OUTPUT :

array (size=3)
  'kind' => string 'urlshortener#url' (length=16)
  'id' => string 'http://goo.gl/Vmnf' (length=18)
  'longUrl' => string 'http://stackoverflow.com/' (length=25)

整个代码..

<?php
define('GOOGLE_API_KEY', 'AIzaSyBS7WpEDiSZ91p-SJoNWOkKxqveb1sfpf4');
define('GOOGLE_ENDPOINT', 'https://www.googleapis.com/urlshortener/v1');
class Googl {

    static function shorten($longUrl)
    {
        // initialize the cURL connection
        $ch = curl_init(
            sprintf('%s/url?key=%s', GOOGLE_ENDPOINT, GOOGLE_API_KEY)
        );

        // tell cURL to return the data rather than outputting it
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

        // create the data to be encoded into JSON
        $requestData = array(
            'longUrl' => $longUrl
        );

        // change the request type to POST
        curl_setopt($ch, CURLOPT_POST, true);

        // set the form content type for JSON data
        curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-type: application/json'));

        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

        // set the post body to encoded JSON data
        curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($requestData));

        // perform the request
        $result = curl_exec($ch);
        curl_close($ch);

        // decode and return the JSON response
        return json_decode($result, true);
    }

}
$res= Googl::shorten('http://stackoverflow.com');
var_dump($res);

暂无
暂无

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

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