我使用xml-rpc客户端对XML-RPC WordPress API / Posts进行了简单的客户端调用,并根据他们的文档here返回结构。如何访问返回值。
Here is a look at my code:
XmlRpcClient client = new XmlRpcClient("http://www.mywebsite.net/xmlrpc.php", false);
String[] fields = new String[4];
fields[0] = "post_id";
fields[1] = "post_title";
fields[2] = "post_date";
fields[3] = "post_content";
Object token = client.invoke("wp.getPost", new Object[]{"0","myusername", "mypassword", 1545, fields });
System.out.println(token);
我打印时使用
的System.out.println(令牌);
我得到以下结论:
{item_one =我是第一项,item_two =我是第二项......}
如何访问item_one和item_two?
答案 0 :(得分:1)
缺少一些信息(什么是XmlRpcClient的完全限定名称?),但假设client.invoke实际上只返回一个Object而不是具有访问器方法的更具体的东西,你可以使用类似这样的东西来解析响应:
Object token = client.invoke("wp.getPost", new Object[]{"0","myusername", "mypassword", 1545, fields });
String[] items = token.toString().split(",");
for (String item : items) {
String[] parts = item.split("=");
String key = parts[0];
String value = parts[1];
// do stuff with your keys and values here
}
当然这不是完美的代码 - 你可能需要检查空值,使用String.trim()等,但它应该让你开始。
答案 1 :(得分:1)
您没有返回数据的真实Java表示形式,因为您没有可以访问的对象
token.item_one
而是你有一个包含一个集合表示的字符串 - 这是(在概念上)可以通过其名称检索值的东西
token.get("item_one")
这种字符串格式可能是JSON,它看起来很像JavaScript,因此可以代表非常复杂的数据。通常,您可以拥有包含对象的对象和对象数组(例如,Customer可能包含Address对象)
所以你有两种可能性:
1)。将字符串解析为真正的Java表示形式,例如标准Java集合类之一。然后使用我在上面显示的按名称命名的样式。
2)。定义一个模仿数据结构的Java类,然后解析字符串以填充这样的对象,然后可以使用“点”形式的访问 - 你真的有一个表示数据的Java对象。
在第一种情况下,有合适的库,例如quickJson
对于第二种,您可以使用标准的实现,例如JAX / B,这可能需要更多的工作,因为您可能需要手动构建目标Java类。企业Java运行时将为您提供这些工具以及工具来帮助或查看诸如Jackson之类的实现。您将看到JAX / B专注于从XML到Java的映射,但this等教程显示了如何使用JSON。
我的猜测是第一个选项,简单解析一个集合可能就足够了。