elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Buscar Ingresar Registrarse
28 Mayo 2012, 12:33  


Tema destacado: ¡Aprende hacking con práctica! - WarZone, el wargame de elhacker.net

+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP
| | | |-+  [API Google] Acortar URL ??, no me retorna !!
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [API Google] Acortar URL ??, no me retorna !!  (Leído 284 veces)
Diabliyo


Desconectado Desconectado

Mensajes: 1.270


M.S.I Angel Cantu


Ver Perfil WWW
[API Google] Acortar URL ??, no me retorna !!
« en: 24 Enero 2012, 00:14 »

Buen dia.

Estoy intentand acortar URLs con mi codigo PHP usando el servicio de goo.gl, pero no me retorna la url acortada :(. Esto es lo que hago:

Código
<?php
$url= 'http://miurl.com/bien/largaaaaaaaaa.html'; # url larga
$api_key='123456789asdasdsadasdasdasd'; # 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) )
$r .= fgets($fs, 1160); // One TCP-IP packet
fclose($fs);
$r= explode("\r\n\r\n", $r, 2);
 
# exito
print_r($r);
}
?>

Y retorna:

Código:
Array ( [0] =>


« Última modificación: 24 Enero 2012, 00:17 por Diabliyo » En línea

~ Yoya ~
Wiki

Desconectado Desconectado

Mensajes: 954



Ver Perfil
Re: [API Google] Acortar URL ??, no me retorna !!
« Respuesta #1 en: 24 Enero 2012, 16:03 »

El código esta bien excepto por 3 problemas que nunca te darías cuenta ya que desactivaste la opción de mostrar error en la linea donde inicia la instancia del socket... Gran error...

Aqui te listo los errores:
  • Es necesario enviar la longitud del contenido via POST, utilizando Content-length: - Requisito para utilizar la api de goo.gl
  • Estas usando urlencode para aplicarlo a la url que en este caso no es debido ya que estas estableciendo que el contenido es en json
  • En ningún momento agregaste el protocolo ssl aunque si el puerto.

Código
<?php
 
$url= 'http://miurl.com/bien/largaaaaaaaaa.html'; # url larga
$host= 'www.googleapis.com'; # servidor
$port= '443'; # puerto ssl
$path= '/urlshortener/v1/url'; # path donde se hara el request POST
$buf= array( "longUrl"=>$url); # array para pasar a json $data= array( 'POST', $path, json_encode($buf) ); # pasando a json
 
$r='';
 
$http_request  = "$data[0] $data[1] HTTP/1.1\r\n";
$http_request .= "Host: $host\r\n";
$http_request .= "Content-Type: application/json;\r\n";
 
//Necesario enviar la longitud de contenido post a enviar
//Es un requisito para poder usar la api de goo.gl
$http_request .= "Content-length: ".strlen(json_encode($buf))."\r\n"; $http_request .= "Connection: close\r\n\r\n";
$http_request .= $data[2]."\r\n";
 
if( ($fs = fsockopen('ssl://'.$host, $port, $errno, $errstr, 10))==FALSE ) echo 'No se puede abrir socket :: ['. $errno. '] '. $errstr;
else
{
fwrite($fs, $http_request);
 
while ( !feof($fs) )
$r .= fgets($fs, 1160); // One TCP-IP packet
fclose($fs);
$r= explode("\r\n\r\n", $r, 2);
 
# exito
print_r($r);
}
?>


Código:
Array
(
    [0] => HTTP/1.1 200 OK
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Date: Tue, 24 Jan 2012 15:00:53 GMT
ETag: "x_mUziAiWO8znp8PiIztCZO6CzY/tFCfIhMbNBGL2qIFNmRkmEaCOiE"
Content-Type: application/json; charset=UTF-8
X-Content-Type-Options: nosniff
X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
Server: GSE
Connection: close
    [1] => {
 "kind": "urlshortener#url",
 "id": "http://goo.gl/iqnUe",
 "longUrl": "http://miurl.com/bien/largaaaaaaaaa.html"
}

)


Saludos.


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
acortar una cadena de texto
Desarrollo Web
competitivo 1 332 Último mensaje 2 Mayo 2005, 16:29
por byebye
Acortar Video...
Multimedia
BenRu 4 432 Último mensaje 27 Julio 2005, 09:03
por arda-lothi
Retorna 0 por socket invalido :S
Programación C/C++
Rozor 1 416 Último mensaje 14 Octubre 2007, 22:56
por Ce3k
Acortar directorio en vb.net
.NET
DarkItachi 1 860 Último mensaje 11 Enero 2009, 03:48
por BETA_V
Google crea un nuevo sistema para acortar sus propias URL
Noticias
putus 1 656 Último mensaje 20 Julio 2011, 02:07
por raul338
Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines