我正在尝试创建一个 java 应用程序来使用 IP 地址从 ARIN 读取信息。我看到 ARIN 正在使用 RESTful Web 服务来获取 IP 信息,但我不确定我需要做什么才能开始。有些人在谈论RESTLET
,其他人在谈论JAX-RS
等等。你能帮我把我带到正确的方向吗?谢谢!
2 回答
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 来检查这个表示内容。
希望它可以帮助你。蒂埃里
问题是您似乎不太了解 REST 是什么(对不起,如果我弄错了!)。Restlet 和 JAX-RS 都与服务器端相关。
您可能需要类似jersey-client 的东西。这是一个帮助与 RESTful Web 服务交互的库。您还可以使用普通的 Java 库对 Web 服务进行 HTTP 调用。REST 与其实现协议紧密结合。这意味着如果 web 服务是用 HTTP 实现的(很可能是),你不需要任何花哨的东西来与之交互。只是 HTTP。
我强烈建议您更多地了解 REST 和 HTTP 本身。