När jag hade lagt ut mina första blogginlägg undrade jag hur i all
världen någon skulle kunna hitta min blogg. Jag frågade min bekant Håkan
Kjellerstrand, som tog på sig rollen som min bloggningsmentor och
gav mig ett antal länkar, bland annat till några servrar som han själv
brukade »pinga« för att sprida kunskapen om sin blogg. Jag hade inget
problem att förstå vad detta innebar i teorin, men hur jag rent
praktiskt skulle göra för att pinga var inte uppenbart. Efter en
stunds jagande efter pingverktyg konstaterade jag att det enklaste för
mig nog var att själv skriva ett litet Javaprogram för att ta hand om
det.
Blog Ping
Att pinga innebär i bloggsammanhang att man skickar ett
litet meddelande som upplyser en pingserver om att man skrivit något på sin
blogg, samt om bloggens adress. Servern kan då så snart den får tid
hämta ner inlägg från bloggen och lagra data om den, indexera
innehållet etc., för att göra informationen tillgänglig för dem
som utnyttjar servern till att bevaka bloggosfären.
Googles Blogger som
jag numera använder låter en välja att pinga Weblogs.com automatiskt,
och informationen går därifrån vidare till en del andra tjänster. Men
vill man pinga fler servrar, Nyligen.se till exempel, får man ingen hjälp av
Blogger.
Tekniskt
Ping görs med ett XML-RPC-anrop, vilket som namnet antyder är ett
remote procedure call-protokoll uppbyggt som XML, ovanpå
HTTP. Metoden man anropar är antingen weblogUpdates.ping eller den utvidgade
versionen weblogUpdates.extendedPing.
Parametrarna till den ursprungliga pingmetoden är bloggens namn, dess
adress och eventuellt ett kategorinamn. Den utvidgade versionen
tillåter tre adresser: en basadress, en direktadress till en sida som
ska kollas för uppdateringar (i många fall densamma som basadressen),
och en för flödet i RSS- eller Atom-format. Den bästa beskrivningen av
parametrarna jag har hittat är den hos
Weblogs.com. Exakt vilka parametrar som krävs och hur de tolkas
verkar dock tyvärr variera lite mellan implementationerna på olika
servrar.
Det vore inte särskilt svårt att skriva ett program i Java som satte
ihop XML för anropet och matade ut den på en socket. Men ännu
lättare är förstås att använda ett bibliotek med färdiga klasser för
XML-RPC-anrop, exempelvis Apache XML-RPC.
Om man laddat ner Apache XML-RPC 3.0, exempelvis från
Sunet, packat upp, och lagt JAR-filerna som finns i lib-katalogen
på sin classpath kan man kompilera och köra följande program.
Den första parametern till programmet är pingserverns adress, och de
följande 2–5 är parametrarna till pingmetoden. Har man minst
fyra pingparametrar antar programmet att man ska köra den utvidgade
pingmetoden, annars den enkla.
import java.net.*;
import java.util.*;
import org.apache.xmlrpc.client.*;
import org.apache.xmlrpc.XmlRpcException;
public class PingBlog {
public static void main(String[] args)
throws MalformedURLException, XmlRpcException
{
XmlRpcClientConfigImpl conf = new XmlRpcClientConfigImpl();
conf.setServerURL(new URL(args[0]));
XmlRpcClient client = new XmlRpcClient();
client.setConfig(conf);
Object[] param = new Object[args.length - 1];
for (int i = 1; i < args.length; ++i)
param[i - 1] = args[i];
Map result = (Map) client.execute(
(param.length < 4 ?
"weblogUpdates.ping" :
"weblogUpdates.extendedPing"),
param);
Iterator it = result.entrySet().iterator();
while (it.hasNext()) {
Map.Entry e = (Map.Entry) it.next();
System.out.println(e.getKey() + ": " + e.getValue());
}
}
}
Exempelvis kan det se ut så här om man har en blogg av den nyare typen
hos Blogger och vill pinga Nyligen.se med den enkla pingen:
java PingBlog http://nyligen.se/ping/ \
'Tjoff?' \
http://gashplutzga.blogspot.com/
Eller med den utvidgade pingvarianten:
java PingBlog http://nyligen.se/ping/ \
'Tjoff?' \
http://gashplutzga.blogspot.com/ \
http://gashplutzga.blogspot.com/ \
http://gashplutzga.blogspot.com/feeds/posts/default \
''
Den tomma strängen på slutet finns där på grund av att vissa
pingservrar kräver att man har med en kategoriparameter till
extendedPing, även om de tillåter att den är tom.
Om allt går bra med pingen skriver programmet ut flerror: false och eventuellt ett trevligt meddelande från pingservern. Blir det något fel på servern får man flerror: true och ett felmeddelande.
Uppdatering 2015: Det här med bloggpingande är nu en historisk kuriositet, men jag låter både detta inlägg och länkarna till Nyligen.se och Bloggar.se längst ner i gamla inlägg ligga kvar, för det historiska intressets skull, och länkarna verkar häpnadsväckande nog fortfarande fungera.
intressant?
om
pinga,
Java
bloggande
03 maj 2007
Bloggping i Javakod
Posted by ctail 00:35 · · Permalänk
Labels: datanörderi, metabloggeri, www
Prenumerera på:
Kommentarer till inlägget (Atom)
1 comments:
Jaha. Och nu gick min hjärna i stå.
Skicka en kommentar