java JAXRS客户机示例在哪里?
我知道Java API for Yahoo Finance。我正在寻找一个示例“hello world”客户端,它使用Yahoo Finance,或者其他一些公开的RESTful API进行测试
另见:
https://apexapps.oracle.com/pls/apex/f?p=44785:24:0::::P24_CONTENT_ID,P24_PREV_PAGE:8145,1
https://jersey.java.net/documentation/latest/client.html
上面的新泽西示例似乎还可以。就让它适应雅虎财经吗
(无可否认,这不是一个经过充分研究的问题。只是为了避免掉进兔子洞。)
# 1 楼答案
您提供的链接是指向Yahoo API的Java库的链接,并没有真正显示我们可以从任何客户端使用的“原始”REST API。因此,我将把您重定向到另一个API。既然我们在Stackoverflow上,那么使用Stack Exchange API是否合适呢
如果你向下滚动到页面底部,你会看到API。有些是安全的API,但这是一个更复杂的讨论,您需要了解一些关于OAuth的知识才能让它们正常工作。我暂时不讨论这个问题
但是,无需注册任何帐户(或注册Stack应用程序),我们就可以对答案、问题等进行简单的GET请求(不需要授权的普通事情;简单的只读)
如果您查看API,请转到问题,您将看到
点击它,你会在底部看到这个
在
id
字段中键入29336802
(这是这个问题的id)。您应该会看到URL发生了变化,将{id}
替换为您输入的ID。现在,如何运行。您应该看到这个JSON响应现在我们知道了JSON响应的格式,可以使用客户端代码进行操作
例如,我使用Maven,并添加这两个依赖项
下面是代码和结果。之后我会解释代码
结果:
说明:
现在已经有很多Stack exchange Java客户机,但我只是在演示如何在较低级别上实现这一点
首先,我们构建
Client
并指定目标你可以通过右键点击上图中的链接获得url,然后(在Firefox中)从上下文菜单中选择[
Copy Link Location
]。它会给你(记得再次输入id。当我们点击“run”时,我的第一个请求被删除)
你可以看到我代码中的URL是不同的。实际上,我只是拆分了查询参数,以便更好地了解如何使用客户端API。我们注册
GZipEncoder
,因为响应将被压缩然后我们构建请求,并通过最后的
get()
调用发送请求我们使用请求生成器方法
accept
和acceptEncoding
设置了两个头,这将分别设置Accept
和Accept-Encoding
头然后我们将响应体反序列化为
String
在接下来的几行中,您必须稍微了解JSON,以及Jackson的默认映射如何将JSON部分映射到Java对象。这可能有点令人困惑,但因为我不想为这个示例创建POJO(因为这是使用Jacskon最常见的方法),所以我只是将JSON部分映射到默认集合
然后我简单地从JSON中提取了一些细节,比如用户id和显示名。还有你的个人资料图片的url,我用
ImageIO.read(URL)
请求它来获得实际的图片。剩下的代码只是一些与GUI相关的东西,用来展示我提取的信息Jersey客户端API在很大程度上是标准的JAX-RS API,在link you provided中有很好的文档记录。为了进一步了解它,我建议你仔细阅读一下