• Ping par XML-RPC

    Désormais, lorsqu'on poste un nouvel article sur son eklablog, si le blog n'est pas protégé par un mot de passe, un ping est envoyé aux principaux serveurs RPC. A quoi ça sert ? A avertir les moteurs de recherche et annuaires tels que Technorati.com ou Weblogs.com que vous avez publié une nouveauté sur votre blog. Votre blog sera alors placé dans la file d'attente et il sera examiné au plus vite pour être actualisé dans les annuaires.

    Passons maintenant au côté technique. Un simple fichier XML envoyé par requête HTTP aux serveurs RPC suffit. J'ai choisi d'envoyer les pings à rpc.pingomatic.com, car ce serveur envoie le ping aux principaux serveux RPC (http://pingomatic.com/ pour plus d'infos). C'est très simple vous allez voir


    Voilà un exemple de requête XML-RPC :

     POST / HTTP/1.0
     User-Agent: EklaBlog
     Host: rpc.pingomatic.com
     Content-Type: text/xml
     Content-length: 447
     
     <?xml version="1.0" encoding="utf-8"?>
     <methodCall>
         <methodName>weblogUpdates.extendedPing</methodName>
         <params>
             <param>
                 <value>Blog de Skreo</value>
             </param>
             <param>
                 <value>http://www.skreo.net</value>
             </param>
             <param>
                 <value>http://www.skreo.net/article-2904-22773-ping-par-xml-rpc.html</value>
             </param>
             <param>
                 <value>http://www.skreo.net/rss/</value>
             </param>
         </params>
     </methodCall>
    [code=xml]
     POST / HTTP/1.0
    User-Agent: EklaBlog
    Host: rpc.pingomatic.com
    Content-Type: text/xml
    Content-length: 447

    <?xml version="1.0" encoding="utf-8"?>
    <methodCall>
        <methodName>weblogUpdates.extendedPing</methodName>
        <params>
            <param>
                <value>Blog de Skreo</value>
            </param>
            <param>
                <value>http://www.skreo.net</value>
            </param>
            <param>
                <value>http://www.skreo.net/article-2904-22773-ping-par-xml-rpc.html</value>
            </param>
            <param>
                <value>http://www.skreo.net/rss/</value>
            </param>
        </params>
    </methodCall>
    [/code]

    Après avoir construit le fichier XML, il ne reste plus qu'à l'envoyer par fsockopen au serveur
    Bon allez je suis gentil je vous fais un ptit exemple

     

    Exemple d'envoi d'un ping à Pingomatic :

    <?php
     
     $content = '<?xml version="1.0" encoding="utf-8"?>
     <methodCall>
         <methodName>weblogUpdates.extendedPing</methodName>
         <params>
             <param>
                 <value>Blog de Skreo</value>
             </param>
             <param>
                 <value>http://www.skreo.net</value>
             </param>
             <param>
                 <value>http://www.skreo.net/article-2904-22773-ping-par-xml-rpc.html</value>
             </param>
             <param>
                 <value>http://www.skreo.net/rss/</value>
             </param>
         </params>
     </methodCall>'
    ;
     
     $headers = 'POST / HTTP/1.0
     User-Agent: EklaBlog
     Host: rpc.pingomatic.com
     Content-Type: text/xml
     Content-length: '
    .strlen($content);
     
     $request = $headers."\r\n\r\n".$content;
     
     $fs = @fsockopen('rpc.pingomatic.com', 80);
     if($fs){
         fwrite($fs, $request);
     }
     ?>
    [code=php]
    <?php

    $content = '<?xml version="1.0" encoding="utf-8"?>
    <methodCall>
        <methodName>weblogUpdates.extendedPing</methodName>
        <params>
            <param>
                <value>Blog de Skreo</value>
            </param>
            <param>
                <value>http://www.skreo.net</value>
            </param>
            <param>
                <value>http://www.skreo.net/article-2904-22773-ping-par-xml-rpc.html</value>
            </param>
            <param>
                <value>http://www.skreo.net/rss/</value>
            </param>
        </params>
    </methodCall>';

    $headers = 'POST / HTTP/1.0
    User-Agent: EklaBlog
    Host: rpc.pingomatic.com
    Content-Type: text/xml
    Content-length: '.strlen($content);

    $request = $headers."\r\n\r\n".$content;

    $fs = @fsockopen('rpc.pingomatic.com', 80);
    if($fs){
        fwrite($fs, $request);
    }
    ?>
    [/code]


    Tags Tags : , , , ,
  • Commentaires

    1
    Samedi 14 Juillet 2007 à 02:09
    Pas mal pas mal ! C'est bin pratique ça.
    2
    Mardi 21 Avril 2009 à 11:18
    Bravo Gentelman,
    c'est vraiment très gentil
    3
    Can yon
    Vendredi 18 Février 2011 à 23:37

    strlen () avec UTF-8, ca le fait pas trop, non ? 

    Suivre le flux RSS des commentaires de cet article


    Ajouter un commentaire

    Nom / Pseudo :

    E-mail (facultatif) :

    Site Web (facultatif) :

    Commentaire :