我的代码如下。 该网址缩短服务的工作原理,但它并没有当我插入我的$POST
。 有谁知道如何解决这个问题我看代码?
// This is the URL you want to shorten
$longUrl = 'http://www.mysite.com/XXXXX/XX/$_POST['qrname']';
// Get API key from : http://code.google.com/apis/console/
$apiKey = 'MyAPIKey';
$postData = array('longUrl' => $longUrl, 'key' => $apiKey);
$jsonData = json_encode($postData);
$curlObj = curl_init();
curl_setopt($curlObj, CURLOPT_URL, 'https://www.googleapis.com/urlshortener/v1/url');
curl_setopt($curlObj, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curlObj, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($curlObj, CURLOPT_HEADER, 0);
curl_setopt($curlObj, CURLOPT_HTTPHEADER, array('Content-type:application/json'));
curl_setopt($curlObj, CURLOPT_POST, 1);
curl_setopt($curlObj, CURLOPT_POSTFIELDS, $jsonData);
$response = curl_exec($curlObj);
// Change the response json string to object
$json = json_decode($response);
curl_close($curlObj);
echo 'Shortened URL is: '.$json->id;
Answer 1:
尝试如下
$longUrl = 'http://www.mysite.com/XXXXX/XX/'.$_POST['qrname'];
上面的代码将正常工作。
Answer 2:
$longUrl = "http://www.xxxxxxx.com";
$postData = array('longUrl' => $longUrl);
$jsonData = json_encode($postData);
//4
$curlObj = curl_init();
curl_setopt($curlObj, CURLOPT_URL, 'https://www.googleapis.com/urlshortener/v1/url?key=yourappkey');
curl_setopt($curlObj, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curlObj, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($curlObj, CURLOPT_HEADER, 0);
curl_setopt($curlObj, CURLOPT_HTTPHEADER, array('Content-type:application/json'));
curl_setopt($curlObj, CURLOPT_POST, 1);
curl_setopt($curlObj, CURLOPT_POSTFIELDS, $jsonData);
//5
$response = curl_exec($curlObj);
$json = json_decode($response);
// echo "<pre>";
// print_r($json);exit;
//6
curl_close($curlObj);
//7
if(isset($json->error)){
echo $json->error->message;
}else{
echo $json->id;
}
Answer 3:
你有钥匙,但你没有正确使用它
你应该把它添加到URL,不要在邮寄的关键
https://www.googleapis.com/urlshortener/v1/url?key='.$apiKey
请检查https://developers.google.com/url-shortener/v1/url/insert
Answer 4:
你逝去的单引号之间的PHP变量,所以它不会被解析。 通过它像双引号
$longUrl = "http://www.mysite.com/XXXXX/XX/$_POST['qrname']";
OR concatinate这样
$longUrl = 'http://www.mysite.com/XXXXX/XX/'.$_POST['qrname'];
Answer 5:
没有足够的声望值尚未就此发表评论,但我通过更换线得到这个工作的罚款:
echo 'Shortened URL is: '.$json->id;
有:
$shortLink = get_object_vars($json);
echo "Shortened URL is: ".$shortLink['id'];
这可能是只是我的PHP安装,但原来的线保持抛出500内部错误我。
Answer 6:
<?php
//URL Shortening Functions( Just copy & paste below code in your application)
function short_url($longUrl){
$apiKey = '******************'; // put your GOOGLE API SHORTENING KEY
$postData = array('longUrl' => $longUrl, 'key' => $apiKey);
$curlObj = curl_init();
$jsonData = json_encode($postData);
curl_setopt($curlObj, CURLOPT_URL, 'https://www.googleapis.com/urlshortener/v1/url?key='.$postData['key']);
curl_setopt($curlObj, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curlObj, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($curlObj, CURLOPT_HEADER, 0);
curl_setopt($curlObj, CURLOPT_HTTPHEADER, array('Content-type:application/json'));
curl_setopt($curlObj, CURLOPT_POST, 1);
curl_setopt($curlObj, CURLOPT_POSTFIELDS, $jsonData);
$response = curl_exec($curlObj);
$json = json_decode($response);
curl_close($curlObj);
if(isset($json->error) || $json == null){
return $longUrl; // retrun same url in case of error or null response
}else{
return $json->id; // return shorted url
}
}
// use this function here
$longUrl = 'https://www.w3schools.com/';
echo short_url($longUrl); // print short url
// If you want to return short url to long url use below function
function long_url($shortUrl){
$apiKey = '***********'; // put your GOOGLE API SHORTENING Key
$params = array('shortUrl' => $shortUrl, 'key' => $apiKey,'projection' => "ANALYTICS_CLICKS");
$final_url = 'https://www.googleapis.com/urlshortener/v1/url?'.http_build_query($params);
$curlObj = curl_init($final_url);
curl_setopt($curlObj, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curlObj, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($curlObj, CURLOPT_HEADER, 0);
curl_setopt($curlObj, CURLOPT_HTTPHEADER, array('Content-type:application/json'));
$response = curl_exec($curlObj);
$json = json_decode($response);
curl_close($curlObj);
if(isset($json->error) || $json == null){
return $shortUrl;
}else{
return $json->longUrl;
}
}
//Function Use here
echo "<br>"; // For next line
$shortUrl = ''; // put the short url generated from above function
echo long_url($shortUrl); // get long url
?>
Answer 7:
尝试使用此代码。 我是为我工作。
$api_key = 'YOUR_KEY';
$request_data = array(
'longUrl' => 'YOUR_LONG_URL'
);
$curl_obj = curl_init(sprintf('%s/url?key=%s', 'https://www.googleapis.com/urlshortener/v1', $api_key));
curl_setopt($curl_obj, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl_obj, CURLOPT_POST, true);
curl_setopt($curl_obj, CURLOPT_HTTPHEADER, array('Content-type: application/json'));
curl_setopt($curl_obj, CURLOPT_POSTFIELDS, json_encode($request_data));
curl_setopt($curl_obj, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl_obj, CURLOPT_SSL_VERIFYHOST, false);
$response = curl_exec($curl_obj);
$json = json_decode($response);
curl_close($curl_obj);
var_dump($json);
die();
Answer 8:
替代$longUrl = 'http://www.example.com/XXXXX/XX/$_POST['qrname']';
具有以下
$longUrl = 'http://www.example.com/XXXXX/XX/{$_POST['qrname']}';
文章来源: Google API - URL Shortener with PHP