我正在尝试使用Apache XMLRPC来管理小型日志服务中的帖子。那里的支持不太好,他们也帮不了什么忙。他们说这个博客支持元博客api。
我正在尝试使用rpc"metaWeblog.getPost"检索我的所有帖子:
token = client.invoke("metaWeblog.getPost", new Object[] {123, // also tried "123" and ""123""
"username",
"password"});
当我使用123(无引号)时,我得到的响应是:java.lang.Exception:java.lang.Integer不能强制转换为java.lang.String
当我使用"123"或"\"123\"(引号)时,我会得到以下响应:java.lang.Exception:无效的postid格式:123
这段代码确实适用于我的Wordpress博客。
Wordpress之所以能工作,可能是因为它在PHP中,不像java那样对类型敏感。
metaWeblog的文档说,请求的原始xml表示如下:
<?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>
因此,您需要尝试将params建立为正确类型的变量
postId需要是一个32的大整数,密码是base64编码的,用户名是一个字符串。
正确地声明变量,并将变量(而不是带引号的常量)传递给invoke方法。
然后,rpc库在后台形成的xml将确保<i4></i4>
在post-id周围,等等
希望这能有所帮助。至少,你可以证明对方没有正确地实现metaWeblog。充其量,你已经解决了你的问题,可以继续前进。