Version: (using KDE 4.2.3) OS: Linux Installed from: Gentoo Packages KBlogger and Bilbo both use KBlog as the backend interface to send XML-RPC requests to and from blogging sites (unless I understood something wrong). When posting a new message using the metaWeblog.newPost the categories are set as a QStringList object. The conversion from this object to the XML structure is done incorrectly: a <array> element should have a <data> element holding multiple <value> elements which should hold the <string> element. For some reason, the generated XML structure ommits the <value> element and only inserts the <string> elements. According to the XML-RPC specs at http://www.xmlrpc.com/spec , this is not allowed and the PHP XML-RPC library which is used for example in Joomla! refuses to parse the XML structure generated for the XML-RPC communication with a "Invalid request payload xmlrpc element STRING cannot be child of DATA" error. For example, the KBlog backend sends this to the server: <member> <name>categories</name> <value> <array> <data> <string><![CDATA[General blog entries [Blog]]]></string> </data> </array> </value> </member> This is not valid markup as it should be: <member> <name>categories</name> <value> <array> <data> <value> <string><![CDATA[General blog entries [Blog]]]></string> </value> </data> </array> </value> </member> The wrong format is rejected and results in an error, the 2nd example is accepted by the PHP XML-RPC library and also works for Joomla!. Perhaps other blog systems are less strict and do not mind the omission of the <value> elements but systems following the specifications to the letter throw errors when KBlog tries to send the messages. Note: I am assuming KBlog does the actual conversion from QStringList to the XML structure, if I am in error, please let me know which part of KDE handles XML-RPC.
On the topic of invalid markup, in wordpressbuggy.cpp the generated struct should be enclosed in a <value> element. I reported this on the Bilbo forum as well as they currently use a forked version of KBlog. In wordpressbuggy.cpp on line 78 change: xmlMarkup += "<param><struct>"; into: xmlMarkup += "<param><value><struct>"; On line 123: xmlMarkup += "</member></struct></param>"; into: xmlMarkup += "</member></struct></value></param>"; In line 177: xmlMarkup += "<param><struct>"; into xmlMarkup += "<param><value><struct>"; And on line 227: xmlMarkup += "</member></struct></param>"; into xmlMarkup += "</member></struct></value></param>"; The resulting XML is now XML-RPC compliant. This does not solve the category error in the metaWeblog API but since wordpressbuggy.cpp generates its own XML, it does not seem to share the functionality that metaweblog.cpp uses. The result is that the WordPress API generates the correct category syntax while the metaWeblog API does not. Or should I open a seperate bug report for the suggested fix for wordpressbuggy.cpp?
Any updates on this? KDE 4.4 is about to be released and my Blogilo 4.3.98 is throwing the same errors as before...
Should be fixed for 4.4.1 and 4.5. WordpressBuggy should be already fixed but for all other APIs which use kxmlrpcclient I have not fixed it there.
I mean of course that I have fixed it there (in kxmlrpcclient), sorry.
This bug has only been reported for versions before 4.14, which have been unsupported for at least two years now. Can anyone tell if this bug still present? If noone confirms this bug for a Framework-based version of kdepim (version 5.0 or later, as part of KDE Applications 15.08 or later), it gets closed in about three months.
Just as announced in my last comment, I close this bug. If you encounter it again in a recent version (at least 5.0 aka 15.08), please open a new one unless it already exists. Thank you for all your input.