-1

我使用 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(token);
我得到以下输出:

{item_one=我是第一个项目,item_two=我是第二个项目...}

如何访问 item_one 和 item_two?

4

2 回答 2

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() 等,但它应该可以帮助您入门。

于 2013-09-18T17:43:42.463 回答
1

您没有返回数据的真正 Java 表示,因为您没有可以访问的对象

 token.item_one

相反,您有一个包含集合表示形式的字符串-(在概念上)您可以通过其名称从中检索值

 token.get("item_one")

这种字符串格式可能是 JSON,它看起来很像 JavaScript,因此可以表示相当复杂的数据。通常,您可以拥有对象数组和包含对象的对象(例如,客户可能包含地址对象)

所以你有两种可能:

1)。将字符串解析为真正的 Java 表示,例如标准 Java 集合类之一。然后,您可以使用我在上面显示的按名称获取样式。

2)。定义一个模仿数据结构的 Java 类,然后解析字符串来填充这样的对象,然后您可以使用“点”形式访问——您确实有一个代表数据的 Java 对象。

在第一种情况下,有合适的库,例如quickJson

其次,您可以使用 JAX/B 等标准的实现,这往往需要更多的工作,因为您可能需要手动构建目标 Java 类。企业 Java 运行时将为您提供这些工具,也许还有一些工具可以提供帮助,或者查看诸如Jackson之类的实现。您将看到 JAX/B 专注于从 XML 到 Java 的映射,但是像这样的教程展示了如何使用 JSON 来代替。

我的猜测是第一个选项,简单的解析到一个集合可能对你来说就足够了。

于 2013-09-18T20:37:12.277 回答