2

我正在尝试创建一个 java 应用程序来使用 IP 地址从 ARIN 读取信息。我看到 ARIN 正在使用 RESTful Web 服务来获取 IP 信息,但我不确定我需要做什么才能开始。有些人在谈论RESTLET,其他人在谈论JAX-RS等等。你能帮我把我带到正确的方向吗?谢谢!

4

2 回答 2

3

Restlet 还有一个客户端 API 可以与远程 RESTful 应用程序交互。有关更多详细信息,请参阅类 Client、ClientResource。为此,您需要从 Restlet 分发中获得以下 jar 文件:

  • org.restlet:主要的 Restlet jar
  • org.restlet.ext.xml:对 XML 的 Restlet 支持
  • org.restlet.ext.json:对 JSON 的 Restlet 支持。在这种情况下,还需要库文件夹中的 JSON jar。

如果我使用位于此地址https://www.arin.net/resources/whoisrws/whois_api.html#whoisrws的文档。这是您可以使用的简单 Restlet 代码:

ClientResource cr = new ClientResource("http://whois.arin.net/rest/poc/KOSTE-ARIN");
Representation repr = cr.get();
// Display the XML content
System.out.println(repr.getText());

或者

ClientResource cr = new ClientResource("http://whois.arin.net/rest/poc/KOSTE-ARIN.txt");
Representation repr = cr.get();
// Display the text content
System.out.println(repr.getText());

Restlet 还在 XML 级别提供了一些支持。因此,您可以通过简单的方式访问 XML 中包含的提示,如下所述:

ClientResource cr = new ClientResource("http://whois.arin.net/rest/poc/KOSTE-ARIN");
Representation repr = cr.get();
DomRepresentation dRepr = new DomRepresentation(repr);
Node firstNameNode = dRepr.getNode("//firstName");
Node lastNameNode = dRepr.getNode("//lastName");
System.out.println(firstNameNode.getTextContent()+" "+lastNameNode.getTextContent());

请注意,您最终可以处理内容协商 (conneg),因为您的 REST 服务似乎支持它:

ClientResource cr = new ClientResource("http://whois.arin.net/rest/poc/KOSTE-ARIN");
Representation repr = cr.get(MediaType.APPLICATION_JSON);

在这种情况下,您的表示对象包含 JSON 格式的数据。与 DomRepresentation 一样,有一个 JsonRepresentation 来检查这个表示内容。

希望它可以帮助你。蒂埃里

于 2013-01-17T09:25:11.767 回答
0

问题是您似乎不太了解 REST 是什么(对不起,如果我弄错了!)。Restlet 和 JAX-RS 都与服务器端相关。

您可能需要类似jersey-client 的东西。这是一个帮助与 RESTful Web 服务交互的库。您还可以使用普通的 Java 库对 Web 服务进行 HTTP 调用。REST 与其实现协议紧密结合。这意味着如果 web 服务是用 HTTP 实现的(很可能是),你不需要任何花哨的东西来与之交互。只是 HTTP。

我强烈建议您更多地了解 REST 和 HTTP 本身。

于 2013-01-16T18:08:43.003 回答