Sobre todo si hacemos un upgrade desde la versión 2, en muchos sistemas, algo no termina de cuajar y puede causar que cuando abrimos un enlace con nuestro gestor de correo, éste no se abra en nuestro navegador preferido.
Podemos hacer dos cosas:

Definir la aplicación con la que abrir los enlaces
Esta es la opción clásica usada en Thunderbird 2 y no recuerdo bien si también en la primera versión. Tenemos que hacer lo siguiente: Editar/Preferencias/Avanzado/General/Editor de configuración (para usuarios de Windows será Herramientas en lugar de Editar) y ahí buscar network.protocol-handler.app.http, y definir su valor a /usr/bin/firefox-bin (por ejemplo, debe ser la ruta y el ejecutable de nuestro navegador). Hacer lo mismo con network.protocol-handler.app.https.
Podemos también definir una aplicación para ftp, por ejemplo.
Pedir que nos pregunte con qué programa abrirlo
Si no funciona lo anterior, este es el método nuevo de Thunderbird 3 y será una asociación de una aplicación al protocolo de otra forma nueva. Aunque vamos a dejar que Thunderbird actúe, sólo vamos a hacer que nos pregunte cómo abrir los enlaces. Para entrar, es lo mismo de antes: Editar/Preferencias/Avanzado/General/Editor de configuración y debemos definir el valor de network.protocol-handler.warn-external.http a true (hacer también con network.protocol-handler.warn-external.http). Como vemos en la captura de pantalla, podemos definir a true todos los valores que encontramos. De esta manera, Thunderbird nos preguntará la próxima vez que abramos un enlace con qué aplicación abrirlo.
Por otro lado, podremos modificar la aplicación con la que se abrirán, accediendo a Editar/Preferencias/Adjuntos y buscar http o https.

En ocasiones, estamos inmersos en un proyecto que requiere conexión con un servidor.
Soy consciente de que existen muchas librerías que nos garantizan el acceso, y tienen muchas opciones aunque, a veces, no necesitamos tanto, sólo un simple acceso y un intercambio sencillo de información; del mismo modo, no nos apetece engordar demasiado nuestro ejecutable, o hacer que nuestro programa dependa de alguna librería externa.
Con esa intención, hice esta clase para C++ y que utilicé para uno de mis pequeños proyectos
hace unos años. Tengo que advertir que es una clase muy simple, y por eso también es válida para los que se quieran iniciar en programación de sockets.
Se puede descargar mysocktar (3.7Kb)
Para compilar el ejemplo:
$ g++ -c MySock.cpp
$ g++ -o ej_mysock ej_mysock.cpp MySock.o
Aún quedan cosas por hacer, sin perder el objetivo de una clase ligera, muy ligera:
- Hacer documentación compatible con Doxygen
- Mejor soporte para cabeceras HTML
- Extracción de tags HTML
- Soporte para contraseñas
Foto: Diego_3336 (Flickr)

Hace mucho tiempo leí en anieto2k una función muy interesante para twittear sin necesidad de incluir APIs tremendas. Es decir, si en mi aplicación, sólo quiero enviar twits, ¿para qué incluir algo demasiado grande? Con una pequeña función estaría todo resuelto.
El tema es que hace poco inicié un proyecto que periódicamente envía twits y necesité echar mano de esa función. Descubrí que Twitter había cambiado un poco su forma de interactuar.
Antes, podíamos enviar por GET (en la URL) el parámetro del mensaje que íbamos a postear, aunque ahora devuelve un error extraño: 413 Request Entity Too Large, más o menos es cuando la consulta que enviamos al servidor es muy grande; aunque el error nos lo da porque no encuentra el post que queremos publicar.
Para solucionarlo, tenemos que enviarlo con el método post, de la siguiente forma:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| function postToTwitter ($username,$password,$message)
{
// Esta línea está modificada
$host = "http://twitter.com/statuses/update.xml";
$ch = curl_init ();
curl_setopt ($ch, CURLOPT_URL , $host);
curl_setopt ($ch, CURLOPT_VERBOSE , 1);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER , 1);
curl_setopt ($ch, CURLOPT_USERPWD , "$username:$password");
curl_setopt ($ch, CURLOPT_HTTP_VERSION , CURL_HTTP_VERSION_1_1 );
curl_setopt ($ch, CURLOPT_POST , 1);
// Esta línea es nueva
curl_setopt ($ch, CURLOPT_POSTFIELDS , 'status='.urlencode(stripslashes(urldecode($message))));
$result = curl_exec ($ch);
$resultArray = curl_getinfo ($ch);
curl_close ($ch);
if($resultArray['http_code'] == "200")
{
echo "<br />OK! postedo en http://twitter.com/".$username."/<br />";
}
else
{
// Esto lo podemos quitar, es sólo para analizar la salida.
print_r($resultArray);
echo "<br />Error! ha ocurrido un problema<br />";
}
} |
Con esta versión modificada del script ya podemos twitear
Y para llamar a esta función:
postToTwitter(’usuario’, ‘contraseña’, ‘140 letras de lo que queremos twitear’);
Foto: Free Twitter Bird Icon Set
Categories: Comunicación, Interneteando, PHP, twitter Tags: curl, envio, http, PHP, post, problema, publicar, twitter
Últimos comentarios