Foros del Web » Programando para Internet » PHP »

Acortador url api Google

Estas en el tema de Acortador url api Google en el foro de PHP en Foros del Web. Me gustaría que alguien me pudiera ayudar con un problema que tengo con la API del acortador de Google. Tengo una base de datos de ...
  #1 (permalink)  
Antiguo 25/02/2013, 09:00
 
Fecha de Ingreso: febrero-2013
Ubicación: Pamplona, España
Mensajes: 2
Antigüedad: 11 años, 1 mes
Puntos: 0
Acortador url api Google

Me gustaría que alguien me pudiera ayudar con un problema que tengo con la API del acortador de Google. Tengo una base de datos de RSS con una url larga. Para que valide el feed en en rss validator de w3c acorto las url con la API. El problema que tengo es que no me acorta y guarda en la base de datos todas las url. Si pongo una dirección de las que no me guarda de forma manual en el acortador de Google, me lo hace, pero en el script no.

Código:
<?php


//conecto con la base de datos
$Servidor = "localhost";
$usuario = "usuario";
$clave = "cpassword";
$bbdd = "bbdd";
$connectid = mysql_connect($Servidor, $usuario, $clave);
mysql_select_db($bbdd);

$ssql = "select * from Bocm order by Fecha desc";
$result = mysql_query($ssql);

while ($registro = mysql_fetch_array($result))
{
  
	$mysqli = new mysqli("localhost", "bfxbdf", "dfbdfbd", dfbdbs");
    	
	if (mysqli_connect_errno()) {
       echo "Error enconexión: ". mysqli_connect_error();
    exit();} 
	
	 //_________________________________________________
	  $url= $registro["Enlace"]; # url larga 
	$api_key=$key; # mi api
	$host= 'www.googleapis.com'; # servidor
	$port= '443'; # puerto ssl
	$path= '/urlshortener/v1/url?'; # path donde se hara el request POST
	$buf= array( "longUrl"=>urlencode($url) ); # array para pasar a json
	$data= array( 'POST', $path.$api_key, json_encode($buf) ); # pasando a json
 
	$r='';
 
	$http_request  = "$data[0] $data[1] HTTP/1.0\r\n";
	$http_request .= "Host: $host\r\n";
	$http_request .= "Content-Type: application/json;\r\n";
	$http_request .= "\r\n";
	$http_request .= $data[2];
 
	if( ($fs = @fsockopen($host, $port, $errno, $errstr, 10))==FALSE )
		echo 'No se puede abrir socket :: ['. $errno. '] '. $errstr;
	else
		{
		fwrite($fs, $http_request);
 
		while ( !feof($fs) )
			$Enlcort .= fgets($fs, 1160); // One TCP-IP packet
		fclose($fs);
		$r= explode("\r\n\r\n", $r, 2);
 
		# exito
		print_r($Enlcort);
		}
	 //_________________________________________________
	 
	 //if ($Enlcort != $registro["Enlacecorto"]){
	 
	 $sql ="UPDATE Bocm SET Enlacecorto = '" . $Enlcort . "' where Enlace = '" . $registro["Enlace"] . "'";
	  
	  /* fetch array asociativo*/
	  
	 if ($rs = $mysqli->query($sql)) { 
	 echo "Dentro";
      /*while ($fila = $rs->fetch_assoc()) {
        
      }*/
     }
	//} 
	 echo "Dirección: " . $registro["Enlace"] . " " . $registro["Bocm ID"] . " Dirección corta: " . $Enlcort . "/n";
    
    
     
    
}
/* liberamos la memoria asociada al resultado */
    $rs->close();	
/* cerramos la conexion */
    $mysqli->close();
?>
También he probado con esta otra:

Código:
<?php

//Acortador URL Google
//___________________________________________
// Declarar la clase

	
class GoogleUrlApi {
 
  // Constructor
  function GoogleURLAPI($key,$apiURL = 'https://www.googleapis.com/urlshortener/v1/url') {
    // Keep the API Url
    $this->apiURL = $apiURL.'?key='.$key;
  }
 
  // Acortar una URL
  function shorten($url) {
  
  
    // Send information along
    $response = $this->send($url);

    // Return the result
    return isset($response['id']) ? $response['id'] : false;
  }
 
  // Expandir una URL
  function expand($url) {
    // Envía esta información
    $response = $this->send($url,false);
    // Vuelve a los resultados
    return isset($response['longUrl']) ? $response['longUrl'] : false;
  }
 
  // Enviar informacion a Google
  function send($url,$shorten = true) {
    // Create cURL
    $ch = curl_init();
    // SI estamos acortado una URL...
    if($shorten) {
      curl_setopt($ch,CURLOPT_URL,$this->apiURL);
      curl_setopt($ch,CURLOPT_POST,1);
      curl_setopt($ch,CURLOPT_POSTFIELDS,json_encode(array("longUrl"=>$url)));
      curl_setopt($ch,CURLOPT_HTTPHEADER,array("Content-Type: application/json"));
    }
    else {
      curl_setopt($ch,CURLOPT_URL,$this->apiURL.'&shortUrl='.$url);
    }
    curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
    // Ejecutar el post
    $result = curl_exec($ch);
    // Cerrar la conexión
    curl_close($ch);
    // Devolver el resultado
    return json_decode($result,true);
  }
}  
//___________________________________________

//Ahora creemos una instancia de GoogleUrlApi para acortar o expandir una URL:
// Crear instancia con una clave
$key = 'AIzaSyA530eUn-c-jc_jevu-1HUyq1f35x90lPA';
$googer = new GoogleURLAPI($key);


//conecto con la base de datos
$Servidor = "localhost";
$usuario = "boletines";
$clave = "Ubibos7582";
$bbdd = "boletines";
$connectid = mysql_connect($Servidor, $usuario, $clave);
mysql_select_db($bbdd);
echo " 2";

//sentencia SQL para acceder a los últimos 10 artículos publicados
$ssql = "select * from Bocm order by Fecha desc";
$result = mysql_query($ssql);

while ($registro = mysql_fetch_array($result))
{
   
   /* Relleno campo Sumario*/
  
	$mysqli = new mysqli("localhost", "boletines", "Ubibos7582", "boletines");
    	
	if (mysqli_connect_errno()) {
       // echo "Error enconexión: ". mysqli_connect_error();
    exit();} 
	

	 $Enlcort= $googer->shorten($registro["Enlace"]); 
	 //if ($Enlcort != $registro["Enlacecorto"]){
	 
	 $sql ="UPDATE Bocm SET Enlacecorto = '" . $Enlcort . "' where Enlace = '" . $registro["Enlace"] . "'";
	  
	  /* fetch array asociativo*/
	  
	 if ($rs = $mysqli->query($sql)) { 
	 echo "Dentro";
      /*while ($fila = $rs->fetch_assoc()) {
        
      }*/
     }
	//} 
	 echo "Dirección: " . $registro["Enlace"] . " " . $registro["Bocm ID"] . " Dirección corta: " . $Enlcort . "/n";
    
    
     
    
}
/* liberamos la memoria asociada al resultado */
    $rs->close();	
/* cerramos la conexion */
    $mysqli->close();
?>

Muchas gracias y saludos cordiales.
  #2 (permalink)  
Antiguo 26/02/2013, 01:33
 
Fecha de Ingreso: febrero-2013
Ubicación: Pamplona, España
Mensajes: 2
Antigüedad: 11 años, 1 mes
Puntos: 0
Respuesta: Acortador url api Google

¿Alguna idea? Después de acortar la url guardo el resultado en otro campo de la misma tabla.

Etiquetas: api, google, mysql, registro, resultados, select, sql, url
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:02.