Ответ 1
Попробуйте как ниже
$longUrl = 'http://www.mysite.com/XXXXX/XX/'.$_POST['qrname'];
Вышеуказанное будет работать.
Мой код ниже. Служба сокращения URL работает, но это не происходит, когда я вставляю свой $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;
Попробуйте как ниже
$longUrl = 'http://www.mysite.com/XXXXX/XX/'.$_POST['qrname'];
Вышеуказанное будет работать.
У вас есть ключ, но вы не используете его правильно
Вы должны добавить его к URL-адресу, не отправлять ключ в сообщение
https://www.googleapis.com/urlshortener/v1/url?key='.$apiKey
Пожалуйста, проверьте https://developers.google.com/url-shortener/v1/url/insert
вы передаете переменную php между одинарными кавычками, чтобы она не анализировалась. передайте его между двойными кавычками вроде
$longUrl = "http://www.mysite.com/XXXXX/XX/$_POST['qrname']";
ИЛИ конкатенировать, как это
$longUrl = 'http://www.mysite.com/XXXXX/XX/'.$_POST['qrname'];
$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;
}
У вас недостаточно очков репутации для комментариев, но я получил эту работу отлично, заменив строку:
echo 'Shortened URL is: '.$json->id;
с:
$shortLink = get_object_vars($json);
echo "Shortened URL is: ".$shortLink['id'];
Это может быть только моя установка php, но исходная строка продолжала метать 500 Internal Error для меня.
Попробуйте использовать этот код. Я работаю для меня.
$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();