Autor
|
Tema: [API Google] Acortar URL ??, no me retorna !! (Leído 2,273 veces)
|
Diabliyo
Desconectado
Mensajes: 1.441
shell# _
|
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: <?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 $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 { $r .= fgets($fs, 1160); // One TCP-IP packet # exito } ?>
Y retorna:
|
|
« Última modificación: 24 Enero 2012, 00:17 am por Diabliyo »
|
En línea
|
|
|
|
~ Yoya ~
Wiki
Desconectado
Mensajes: 1.125
|
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.
<?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 $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 .= "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 { $r .= fgets($fs, 1160); // One TCP-IP packet # exito } ?>
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
|
Mi madre me dijo que estoy destinado a ser pobre toda la vida. Engineering is the art of balancing the benefits and drawbacks of any approach.
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Acortar Video...
Multimedia
|
BenRu
|
4
|
2,541
|
27 Julio 2005, 09:03 am
por arda-lothi
|
|
|
Acortar directorio en vb.net
.NET (C#, VB.NET, ASP)
|
DarkItachi
|
1
|
2,939
|
11 Enero 2009, 03:48 am
por BETA_V
|
|
|
Google crea un nuevo sistema para acortar sus propias URL
Noticias
|
putus
|
1
|
2,202
|
20 Julio 2011, 02:07 am
por raul338
|
|
|
Usar Google Chrome puede acortar la batería del portátil
Noticias
|
wolfbcn
|
0
|
1,523
|
15 Julio 2014, 21:42 pm
por wolfbcn
|
|
|
Diferencias entre funcion que retorna y no retorna.
Programación C/C++
|
FKT
|
7
|
4,292
|
21 Agosto 2015, 00:31 am
por FKT
|
|