Fehlerantwort XMLRPC
-
12-12-2019 - |
Frage
Ich versuche zu benutzen Apache XMLRPC beiträge bei einem kleinen Weblog-Dienst verwalten.Der Support ist dort nicht großartig und sie können nicht wirklich helfen.Sie sagen, das Weblog unterstützt die metaweblog-api.
Ich versuche, alle meine Beiträge mit dem rpc abzurufen "MetaWeblog.getPost":
token = client.invoke("metaWeblog.getPost", new Object[] {123, // also tried "123" and "\"123\""
"username",
"password"});
Wenn ich 123 (keine Anführungszeichen) verwende, erhalte ich diese Antwort: Java.lang.Ausnahme:Java.lang.Integer kann nicht in Java umgewandelt werden.lang.Zeichenfolge
Wenn ich "123" oder "\" 123 \"" (Anführungszeichen) verwende, erhalte ich diese Antwort: Java.lang.Ausnahme:Ungültiges Postid-Format:123
Dieser Code funktioniert mit meinen Wordpress-Blogs.
Lösung
Wordpress funktioniert wahrscheinlich, weil es in PHP ist und nicht so typensitiv wie Java ist.
In den Dokumenten für MetaWeblog heißt es, dass die rohe XML-Darstellung einer Anfrage folgendermaßen aussieht:
<?xml version="1.0"?>
<methodCall>
<methodName>metaWeblog.getPost</methodName>
<params>
<param>
<value><i4>1829</i4></value>
</param>
<param>
<value>Bull Mancuso</value>
</param>
<param>
<value><base64>bm93YXk=</base64></value>
</param>
</params>
</methodCall>
Sie müssen also versuchen, die Parameter als Variablen des richtigen Typs festzulegen
Die postId muss eine 32 große Ganzzahl sein, das Passwort ist base64-codiert, der Benutzername ist eine Zeichenfolge.
Deklarieren Sie Ihre Variablen ordnungsgemäß und übergeben Sie Variablen, keine Konstanten in Anführungszeichen, an die invoke-Methode.
Dann wird das XML, das unter der Haube von der RPC-Bibliothek gebildet wird, sicherstellen, dass <i4></i4>
ist um die Post-ID usw.
Hoffe, das hilft ein wenig.Zumindest können Sie beweisen, dass die andere Seite MetaWeblog nicht richtig implementiert.Im besten Fall haben Sie Ihr Problem gelöst und können weitermachen.