AddThis Feed Button
AddThis Social Bookmark Button
IMGP1165
IMGP1166
IMGP1143
IMGP1144
IMGP1145
IMGP1146
IMGP1147
IMGP1148
IMGP1149
IMGP1150
Categories

This Month Last Year

Julio 2008
L M X J V S D
« Jun «-»  
 123456
78910111213
14151617181920
21222324252627
28293031  
links
18
Sep

Haciendo pings a webs

Algunas páginas soportan el envío de “pings”. ¿Qué es un ping?, en este caso se trata de un sistema mediante llamadas XML-RPC que permite decirle a un sitio Web que hemos actualizado alguna clase de contenido en nuestra pagina y por lo tanto debe prestarle atención.

Una llamada Ping tiene un funcionamiento similar al que ya vimos en los Trackbacks. Solo que aquí no se trata de indicar que un contenido concreto se cita en la pagina de destino, si no de informar que se ha actualizado el sitio a una pagina que lo procese, por ejemplo a Technorati para que actualice los posts que hemos publicado y con ello los posibles links.

En Technorati encontramos un ejemplo de cómo hacer una llamada ping .

Esta se compone de una cabecera http y una estructura XML siguiendo el estándar de XML-RPC donde le pasamos como valores el nombre de nuestro blog y su URL absoluta.

Cabecera HTTP
  1. POST /rpc/ping HTTP/1.0
  2. User-Agent: YOUR AGENT HERE
  3. Host: rpc.technorati.com
  4. Content-Type: text/xml
  5. Content-length: 250

 

Cuerpo del mensaje
  1. <?xml version="1.0"?>
  2. <methodCall>
  3. <methodName>weblogUpdates.ping</methodName>
  4. <params>
  5. <param>
  6. <value>El cajon Desastre</value>
  7. </param>
  8. <param>
  9. <value>http://www.dubasdey.com/</value>
  10. </param>
  11. </params>
  12. </methodCall>

 

 Como ya hable en el artículo sobre Trackbacks , cada línea de la cabecera debe ir separada por un salto de línea y para separar la cabecera del cuerpo se añade otro salto de línea adicional. Por lo demás simplemente es el envío de estos datos como “texto” al host y puerto requerido, en este caso rpc.technorati.com con el puerto http por defecto (80)

 

 

Código PHP de una petición ping
  1. $xmlSend = "<?xml version=\"1.0\"?".">\r\n";
  2. $xmlSend .= "<methodCall>\r\n";
  3. $xmlSend .= " <methodName>weblogUpdates.ping</methodName>\r\n";
  4. $xmlSend .= " <params>\r\n";
  5. $xmlSend .= " <param>\r\n";
  6. $xmlSend .= " <value>$BlogName</value>\r\n";
  7. $xmlSend .= " </param>\r\n";
  8. $xmlSend .= " <param>\r\n";
  9. $xmlSend .= " <value>$BlogUrl</value>\r\n";
  10. $xmlSend .= " </param>\r\n";
  11. $xmlSend .= " </params>\r\n";
  12. $xmlSend .= "</methodCall>\r\n";
  13.  
  14. $http_request = "POST ".$ping_path.$ping_query." HTTP/1.0\r\n";
  15. $http_request .= "Host: ".$ping_host."\r\n";
  16. $http_request .= "User-Agent: ".$agent."/".$version."\r\n";
  17. $http_request .= "Content-Type: text/xml;\r\n";
  18. $http_request .= "Content-Length: ".strlen($xmlSend)."\r\n";
  19. $http_request .= "\r\n";
  20. $http_request .= "$xmlSend";
  21.  
  22. $response="";
  23. $fs = @fsockopen($ping_host, $ping_port, $errno, $errstr);
  24. if (is_resource($fs)){
  25. @fwrite($fs, $http_request);
  26. while (!feof($fs)) {$response.= @fgets($fs, 2048);}
  27. @fclose($fs);
  28. }

 

En este ejemplo podemos ver como primero se crea el la estructura XML de la llamada XML-RPC y se le añaden los datos, este paso lo realizo antes para poder determinar el tamaño de los datos a enviar, ya que este dato aparece en la cabecera.
Después se crea la cabecera, usando diferentes variables para los campos requeridos como en el ejemplo anteriormente visto de cabecera.
Y finalmente abro un socket con fsockopen, y envío la cadena.

En este ejemplo después de enviar los datos no cierro el socket y espero para ver si se me da alguna respuesta que capturo en la variable $response, esto puede ser muy util sobretodo para depuración.

Otras función que os puede ser útil para esta operación es parse_url que resuelve una cadena url y nos devuelve cada una de sus partes

 

Uso de parse_url
  1. $pinguri_parts = parse_url($url);
  2. $ping_host = $pinguri_parts['host'];
  3. $ping_port = strlen($pinguri_parts['port'])>0?$pinguri_parts['port']:80;
  4. $ping_path = $pinguri_parts['path'];
  5. $ping_query = strlen($pinguri_parts['query'])>0?"?".$pinguri_parts['query']:"";

 

Y con esto creo que ya esta indicado lo básico de los pings a webs. Por supuesto siempre podéis dejar comentarios.
Y preguntas o sugerencias  a contacto@dubasdey.com

 

 


26
Ago

TrackBacks

¿Que es un TrackBack?
Un TackBack es un sistema para notificar a un blog que estamos escribiendo una entrada que hace referencia a un artículo de ese blog, de esta forma el autor del otro blog sabrá que estamos escribiendo un articulo que tiene referencia con el suyo.
En la mayoría de CMS este sistema esta automatizado de modo que al hacer la petición automáticamente en el blog del que hablamos aparece un comentario o nota haciendo referencia a nuestro articulo en nuestro blog.

TrackBack Desc 1

El uso correcto de los Trackback es una herramienta muy útil tanto para el editor del blog que referenciamos, que sabe quien esta escribiendo sobre el, como para nosotros que obtenemos un link de su documento al nuestro. También los lectores se ven ampliamente beneficiados de este sistema al aumentar la información sobre un tema, ya que generalmente los post que hacen referencia a uno dado suelen complementar la información del mismo.

Envió de TrackBacks.
El envió de un trackback es bien simple. Lo primer que debemos hacer es obtener la dirección “Trackback” de el post sobre el que hablamos, que no suele ser igual que su dirección url o Permalink.

Lo que debemos hacer es enviar una serie de variables por POST como “application/x-www-form-urlencoded” (algunos clientes también aceptan GET pero lo correcto es el método POST) a la dirección de TrackBack.
La única variable obligatoria a enviar (a parte de las que sean parte de la dirección del TrackBack) es “url” que contiene la dirección url (única) de nuestro post.
También podemos enviar otras variables:

  • title               el titulo de nuestro post
  • blog_mame    el nombre de nuestro blog
  • excerpt           un extracto o resumen de la conversación

Una vez enviada la cadena, como respuesta recibiremos una estructura XML indicando si el proceso se ha realizado correctamente o si no ha sido posible realizarlo.

 

Respuesta de error
  1. <?xml version=”1.0encoding=”iso-8859-1?>
  2. <response>
  3. <error>1</error>
  4. <message>Faltan parametros</message>
  5. </response>

Respuesta de recepción correcta
  1. <?xml version=”1.0encoding=”iso-8859-1?>
  2. <response>
  3. <error>0</error>
  4. </response>
  5.  

 

Trackbacks esquema

Recepción de un TrackBack.
Para la recepción de un trackback simplemente hemos de recuperar las variables enviadas comprobar si son correctas, realizar el proceso que queramos con ellas (como crear un comentario de un trackback en el post) y enviar una respuesta XML como las anteriormente citadas.