2012-10-25 23 views
20

Kodum aşağıdadır. URL kısaltma hizmeti çalışır, ancak $POST'umu eklediğimde olmaz. Bunu nasıl düzelteceğimi bilen var mı? Yukarıdaki çalışacakGoogle API - PHP ile URL Kısaltıcı

$longUrl = 'http://www.mysite.com/XXXXX/XX/'.$_POST['qrname'];

aşağıda

// 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; 
+0

echo 'Kısaltılmış URL şudur:'. $ Json-> id; kontrol ettikten sonra. ! İşe yarıyor . –

+1

Bu kodu API dokümanı içinde nerede bulacağınızı bilmiyorum, ama teşekkürler! – Macbernie

cevap

11

deneyin.

+8

Sorununuz cURL hakkında bir şey değil, PHP'de değişkenleri ve dizeleri birleştirmekle ilgili, bkz http://php.net/manual/de/language.types.string.php –

+0

Neden OP'nin Php kodunu kullanamadığımı biliyorum ve URL'yi kısaltın mı? Bana "error", "useLimits", "reason": "dailyLimitExceededUnreg", "message" hata iletisini döndür: "Geçersiz Kılınan Kullanım İçin Günlük Sınır Aşıldı." Devam eden kullanım kayıt gerektirir. "' Http Referrer, Kota, her şey iyi görünüyor kontrol ediyorum. – Mavichow

5

php değişkenini tek tırnaklar arasında iletiyorsunuz, böylece ayrıştırılmayacak. yorum yapmak henüz yeterince itibar puanı yok mu bu

$longUrl = 'http://www.mysite.com/XXXXX/XX/'.$_POST['qrname']; 
+2

Sadece bu sorunu çözmek değil, aynı zamanda OP, *** söyler gibi bu cevabı Hackableweb üzerinde tercih ederim Neden ***! –

1

gibi

$longUrl = "http://www.mysite.com/XXXXX/XX/$_POST['qrname']"; 

VEYA borular ile arka arkaya gibi çift tırnak arasına geçmek, ama bu çizgiyi değiştirerek iyi çalışıyor var:

echo 'Shortened URL is: '.$json->id; 

ile:

$shortLink = get_object_vars($json); 
echo "Shortened URL is: ".$shortLink['id']; 

Sadece php kurulumum olabilir, ancak orijinal hat benim için 500 Dahili Hata atmaya devam etti.

https://www.googleapis.com/urlshortener/v1/url?key='.$apiKey 

kontrol edin

6
$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; 
    } 
0

Bu kodla deneyin. Benim için çalışıyorum.

$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();