Wordpress Login, Artikel auslesen



  • Mein Endziel ist folgendes: Ich übergebe meinem Java-Programm einen Link von meiner Website (z.B. http://me-lrt.de/java-test ). Das Programm loggt sich dann in den Wordpress-Adminbereich ein, findet über den Link den passenden Artikel und speichert Titel und Inhalt des Artikels in einer Textdatei ab.

    Was ich bisher in Erfahrung gebracht habe ist, dass ich dazu XML-RPC nutzen kann. Ich habe http://xmlrpc.sourceforge.net/ runtergeladen und versucht, das Beispiel von http://www.franzone.com/2007/08/07/wordpress-posting-via-java-part-2/ zum laufen zu bringen:

    import redstone.xmlrpc.XmlRpcClient;
    import java.util.HashMap;
    
    public class XmlRpcPoster
    {
      public static void main( String[] args )
      {
          // Get command-line arguments into variables
          String sXmlRpcURL = "http://me-lrt.de/";
          String sUsername = "asd";
          String sPassword = "qwe";
    
          // Hard-coded blog_ID
          int blog_ID = 1;
    
          // XML-RPC method
          String sXmlRpcMethod = "metaWeblog.newPost";
    
          // We'll hard-code our blog content for now as well
          String sContent = "Hello XML-RPC World qwe!";
          String sTitle = "Hello XML-RPC Title asd";
    
          // Create our content struct
          HashMap hmContent = new HashMap();
          hmContent.put("title", sTitle);
          hmContent.put("description", sContent);
    
          // You can specify whether or not you want the blog published immediately
          boolean bPublish = false;
    
          // Try block
          try
          {
            // Create the XML-RPC client
            XmlRpcClient client = new XmlRpcClient( sXmlRpcURL, false );
    
            // Make our method call
            Object token = client.invoke( sXmlRpcMethod, new Object[] { 
               new Integer( blog_ID ), sUsername, sPassword, hmContent, 
               new Boolean( bPublish ) } );
    
            // The return is a String containing the postID
            System.out.println( "Posted : " + token.toString() );
          }
    
          // Catch exceptions
          catch( Exception e )
          {
            e.printStackTrace( System.err );
          }
      }
    }
    

    Das funktioniert so aber noch nicht, es kommen die Fehler

    [Fatal Error] :86:70: The reference to entity "key" must end with the ';' delimiter.
    redstone.xmlrpc.XmlRpcException: The response could not be parsed.
    	at redstone.xmlrpc.XmlRpcClient.handleResponse(Unknown Source)
    	at redstone.xmlrpc.XmlRpcClient.endCall(Unknown Source)
    	at redstone.xmlrpc.XmlRpcClient.invoke(Unknown Source)
    	at XmlRpcPoster.main(XmlRpcPoster.java:40)
    Caused by: redstone.xmlrpc.XmlRpcException: A problem occured during parsing
    	at redstone.xmlrpc.XmlRpcParser.parse(Unknown Source)
    	... 4 more
    Caused by: org.xml.sax.SAXParseException: The reference to entity "key" must end with the ';' delimiter.
    	at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(Unknown Source)
    	... 5 more
    

    Stimmt vielleicht der XML-RPC URL Entry Point "http://me-lrt.de/" nicht? Ich wusste nicht wirklich, was ich da eintragen soll.

    Oder würdet ihr das ganze Problem vielleicht anders angehen?



  • Die korrekte URL wäre http://deine-domain.tld/xmlrpc.php, und es muss natürlich in WP auch aktiviert sein.



  • Jetzt funktioniert es 👍
    Vielen Dank für die URL! Aktiviert war es schon. Dann werd ich mal versuchen, den Artikel zu downloaden.



  • Ich habe keine Funktion gefunden, um einen Post anhand seines Permalinks zu finden. Man braucht anscheinend immer die ID. Durch die Artikel zu iterieren und nach dem richtigen zu suchen dauert ewig. Hat jemand eine Idee, was ich da machen könnte?

    Mein Ansatz: Ich habe ein Tool geschrieben, das alle Artikel runterläd (ID von 1 bis 9000), eine HashMap der Permalinks und IDs erstellt und in einer Textdatei speichert. Diese Datei kann mein anderes Programm dann später nutzen. Klingt das sinnvoll?


Log in to reply