1

这是我的 goo.gl url 缩短类。像 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);
    }

}

?>
4

1 回答 1

1

您需要添加此参数..(因为 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);
于 2014-04-06T12:40:21.113 回答