在 NetBeans 模块中创建 REST 风格的服务客户端

从 NetBeans IDE 6.9 开始,在 NetBeans 模块项目中提供了本机 REST 支持。现在可以直接在 NetBeans 模块中生成 REST 风格的客户端代码。还可以在 Java 或应用程序中插入 Jersey REST 风格的客户端代码。

在本教程中,将创建一个 NetBeans 平台应用程序,该应用程序使用 Twitter "What Are You Doing" 服务,显示 Twitter 好友的状态消息列表。首先,创建平台应用程序。选择应用程序中所需的库。然后创建一个 NetBeans 模块。最后,向模块中添加一个 REST 风格的客户端和一些基本显示元素。客户端使用 OAuth 授权。

目录

此页上的内容适用于 NetBeans IDE 6.9-7.1

要学习本教程,您需要具备以下软件和资源。

软件或资源 要求的版本
NetBeans IDE Java EE 下载包
Java 开发工具包 (JDK) 版本 6 或版本 7

创建平台应用程序

可以将 NetBeans IDE 库添加到 NetBeans 平台应用程序中。在此部分,将创建平台应用程序并添加需要的库。

 

创建模块套件:

  1. 单击 "New Project"(新建项目)(在 Linux 和 Windows 上为 Ctrl-Shift-N,在 MacOS 中按 ⌘-Shift-N)。此时将打开新建项目向导。
  2. 选择 "NetBeans Modules"(NetBeans 模块)类别。然后选择 "NetBeans Platform Application"(NetBeans 平台应用程序)项目。单击 "Next"(下一步)。
  3. 将该项目命名为 RestfulClientPlatformApp。为该项目选择一个位置。接受其他默认设置,然后单击 "Finish"(完成)。RestfulClientPlatformApp 项目出现在 "Projects"(项目)窗口中。
  4. 在 "Projects"(项目)窗口中,右键单击 "RestfulClientPlatformApp" 项目节点,然后选择 "Properties"(属性)。"Properties"(属性)对话框打开。
  5. 在 "Properties"(属性)对话框中,选择 "Libraries"(库)类别。请注意,仅包括 "Platform" 库。
  6. 展开 "Enterprise" 库的节点。勾选与 "RESTful Web Service Libraries"(REST 风格的 Web 服务库”)对应的 " Included"(包含)框。
    套件属性,其中显示选定要包含的 REST 的风格的 WS 库
  7. "Resolve"(解决)按钮以红色突出显示,因为 REST 风格的 Web 服务库依赖于其他未包含在套件中的库。单击 "Resolve"(解决)按钮以包含这些库。
  8. 单击 "OK"(确定)。平台应用程序已准备就绪,可以创建客户端模块了。

创建客户端模块

仅需几个步骤,就可创建一个用作 Twitter "What Are You Doing" 服务客户端的模块。Twitter 服务是 NetBeans IDE Web 服务管理器中已注册的即用型服务。您可以添加其他

创建模块和客户端功能:

  1. 在 "Projects"(项目)窗口中,右键单击 RestfulClientPlatformApp 的 "Modules"(模块)子节点,然后选择 "Add New..."(添加新模块...)。此时将打开新建模块项目向导打开。
  2. 将该模块命名为 TwitterClientModule。接受其他字段中的默认设置,然后单击 "Next"(下一步)。此时打开 "Basic Module Configuration"(基本模块配置)面板。
  3. 给代码名称基取一个任意的名称,例如 org.my.twitter.friends。接受其他字段中的默认设置,然后单击 "Finish"(完成)。TwitterClientModule 现在出现在 "Projects"(项目)窗口中平台应用程序的 "Modules"(模块)节点下面。
  4. 右键单击 "TwitterClientModule" 节点,然后选择 "Open Project"(打开项目)。此时 "TwitterClientModule" 节点出现在 "Projects"(项目)窗口的根级别处。
    显示 TwitterClientModule 根节点的
  5. 选择新的根级别的 "TwitterClientModule" 节点。启动新建文件向导(通过 Ctrl-N/⌘-N 快捷键,或 "New File"(新建文件)图标,或节点的上下文菜单)。
  6. 在新建文件向导中,选择 "Web Services"(Web 服务)类别和 "RESTful Java Client"(REST 风格的 Java 客户端)文件类型。单击 "Next"(下一步)。"New RESTful Java Client"(新建 REST 风格的 Java 客户端)面板打开。
  7. 将该类命名为 TwitterClient,然后给它取一个任意的包名称,或选择之前创建的代码名称基。
    显示类和包名的新建 REST 风格的客户端向导
  8. 在 "Select the REST resource"(选择 REST 资源)的下面,选择 "IDE Registered"(IDE 中的已注册服务)。单击 "Browse"(浏览),然后浏览 "Twitter" > "Twitter OAuth" > "[statuses]" > "[friends_timeline.{format}]"。选择该资源,然后单击 "OK"(确定)。
    在

    注:可在 IDE 中注册其他 Web 服务。转到 "Services"(服务)窗口,右键单击 "Web Services"(Web 服务)节点,然后选择 "Add Web Service"(添加 Web 服务)。您可以添加本地文件或 REST 风格的 URL。
    Web 服务管理器

  9. 此时会自动选择 OAuth 作为验证类型。接受所有默认值,然后单击 "Finish"(完成)。
    已完成的新建 REST 风格的客户端向导
  10. 此时打开一个警告对话框。该对话框询问是否希望通过 WADL 文件中的 XML 方案引用来生成 Java 工件。单击 "Yes"(是)。
  11. 可能会出现另一个警告,询问您是否将模块添加到类路径中。单击 "OK"(确定)。
    关于缺少依赖关系的
  12. 如果您需要将模块添加到类路径中,则右键单击 "TwitterClientModule" 节点,然后打开其 "Project Properties"(项目属性)。转至 "Libraries"(库)部分,然后使用 "Add Dependency"(添加依赖关系)按钮添加模块。此按钮会打开模块依赖关系的列表以便于浏览。

此时会生成 TwitterClient 类,并且该类会在编辑器中打开。TwitterClient 类很复杂,其中包含以下字段、方法和内部类:

  • CONSUMER_KEY:使用者键值字符串
  • CONSUMER_SECRET:使用者密钥字符串
  • initOAuth():用于 OAuh 初始化的方法
  • getFriendsTimeline():对应于 HTTP 方法 getFriendsTimeline(来自 REST 资源)的方法
  • makeOAuthRequestUnique():对于一个会话中的多个 API 调用非常有用
  • login:用于登录 Twitter 应用程序(强制授权)。此方法会调用另外两个生成的方法:getOAuthAccessTokengetOAuthRequestToken

接下来您会从 Twitter 获取 OAuth 键值,并将它们添加到 TwitterClient 中。

从 Twitter 获取 OAuth 键值

为了使 NetBeans 平台应用程序能够访问 Twitter 数据,需要从 Twitter 获取 CUSTOMER 和 CUSTOMER_SECRET 键值,以及验证字符串。Twitter 使用 OAuth 授权,而 OAuth 授权需要这些键值。但是,预计 OAuth 将设置为可由服务器上的 Web 应用程序调用。为了获取授权码,您要注册“伪”Web 应用程序。

从 Twitter 获取 OAuth 键值:

  1. 打开浏览器。转至 "Twitter" > "Applications"(应用程序)页面,然后单击 Register a new application(注册新应用程序)。您需要登录 Twitter 帐户。如果您具有多个帐户,请确保您登录到正确的帐户。
  2. Application Name(应用程序名称)文本字段中键入 NB Platform Friends Application
  3. Description(描述)字段中键入描述。此字段为必填字段。可以键入类似于 "NetBeans Platform application calling the friends_timeline operation" 的内容。
  4. Application Website(应用程序网站)字段中键入任意 URL。
  5. Application Type(应用程序类型)选项中,选择 "Client"(客户端)单选按钮。
  6. Default Access Type(默认访问类型)选项中,选择 "Read and Write"(读和写)单选按钮。
  7. 将其他选项保留为默认设置,然后按 "Save"(保存)。此时会打开浏览器页面,其中包含您已注册的应用程序的详细信息。重要的详细信息是 Consumer key(使用者键值)和 Consumer secret(使用者密钥)。
  8. 从浏览器中复制 "Consumer key"(使用者键值)。在 IDE 中,找到其中设置 CONSUMER_KEY 的行。在引号之间粘贴使用者键值。
    显示 CONSUMER_KEY 和 CONSUMER_SECRET 位置的 TwitterClient
  9. 将浏览器中的使用者密钥键值复制并粘贴到 TwitterClient。保存所做的更改。

设计窗口

要完成此项目,请添加一个窗口。使用 UI 组件填充窗口并添加操作,以便在例如单击某个按钮时将显示好友状态列表。

设计窗口:

  1. 在 "Projects"(项目)窗口中,右键单击模块的节点,然后选择 "New"(新建)> "Window"(窗口)。此时将打开新建窗口向导,其中显示 "Basic Settings"(基本设置)面板。
  2. 在 Basic Settings"(基本设置)面板中,选择 editor 窗口位置,选择 "Open on Application Start"(在应用程序启动时打开),然后单击 "Next"(下一步)。此时将打开 "Name, Icon and Location"(名称、图标和位置)面板。
  3. 在 "Class Name Prefix"(类名前缀)字段中,键入 twitterFriendsStatus。选择 org.my.twitter.friends 包。单击 "Finish"(完成)。
    新建窗口向导的
  4. 在 "Design"(设计)视图中将打开 twitterFriendsStatusTopComponent 文件。Swing UI 组件的组件面板在右侧打开。
    Swing 组件的新窗口和组件面板的设计视图,尚未添加任何组件
  5. 将以下 GUI 元素拖动至设计区域:
    组件 显示文本 设置
    Button(按钮) "Get Friends' Statuses"(获取朋友的状态)

    将变量名称更改为 getStatusesButton。

    取消选中 "enabled" 属性

    取消选中的

    Button(按钮) "Log in"(登录) 将变量名称更改为 loginButton
    Scroll pane(滚动窗格) --  
    Text area(文本区域) -- 拖至滚动窗格中

    调整文本区域/滚动窗格的大小,并根据您的喜好对齐按钮。
    显示已完成窗口的新窗口设计视图

  6. 双击 "Login" 按钮。IDE 为该按钮生成一个操作方法,而编辑器切换至 "Source"(源)视图,并且其焦点位于操作方法上。
  7. 将以下代码键入或复制到登录按钮操作方法的主体中。此代码可启动用于使应用程序登录 Twitter 的方法、启用 "getStatuse" 按钮以及禁用登录按钮。应用程序只需要登录一次。请注意,不需要实例化 TwitterClient 即可调用其登录方法。
    private void loginButtonActionPerformed(java.awt.event.ActionEvent evt) {                                   
       TwitterClient.login();
       getStatusesButton.setEnabled(true);
       loginButton.setEnabled(false);
    } 
  8. 双击 "getStatuses" 按钮。IDE 为该按钮生成一个操作方法,而编辑器切换至 "Source"(源)视图,并且其焦点位于操作方法上。
  9. 将以下处理代码粘贴或键入到 "getStatuses" 按钮操作方法的主体。此代码使用 login 方法创建的标记实例化 TwitterClient 并初始化 OAuth。然后该代码调用 getFriendsTimeline、获取状态列表、将包含用户名的行和每种状态的文本添加到字符串中,然后将该字符串传递到文本区域。
    private void getStatusesButtonActionPerformed(java.awt.event.ActionEvent evt) {                                         
    TwitterClient client = new TwitterClient("xml");
    client.initOAuth();
    Statuses response = client.getFriendsTimeline(Statuses.class, null, null, null, "10");
    response.getStatus().size();
    String text = "";
    for (StatusType st : response.getStatus()) {
    text += st.getUser().getName() + ": " + st.getText() + "\n";
    }
    jTextArea1.setText(text);
    }
  10. 此代码对于未找到的类有一些警告图标。按 Ctrl-Shift-I 组合键(在 MacOS 上按 ⌘-Shift-I 组合键)。"Fix All Imports"(修复所有导入)对话框即打开。选择 twitter.twitteroauth.twitterresponse 类。单击 "OK"(确定)。
    显示要导入的正确类的

现在已完成此应用程序。运行 RestfulClientPlatformApp,然后出现一个 NetBeans 平台,在 "Output"(输出)部分中有设计的窗口。单击 "Log In"(登录),此时会打开一个对话框,其中包含一个链接,单击该链接即可授权应用程序访问数据。

用于授权 OAuth 将数据传递到应用程序的对话框

单击该链接,此时会打开浏览器页面,Twitter 会在该页面中询问您是否希望允许您的应用程序访问 Twitter 数据。单击 "Allow"(允许),然后该页面会刷新,同时显示个人识别码。将该个人识别码复制并粘贴到验证对话框的检验器字符串字段中。单击 "OK"(确定)。

现在禁用了 "Log In"(登录)按钮并启用了 "Get Friends' Statuses"(获取好友状态)按钮。单击 "Get Friends' Statuses"(获取好友状态),随即出现一个有关 Twitter 好友的最新状态消息的列表。

显示状态消息的正在运行的应用程序

更多练习

下面是供您探讨的更多思路:

  • 向模块中添加另一个窗口,使用 friends_timeline API 中的其他方法。
  • 向项目中添加另一个模块,使用其他的 Twitter 资源。
  • 浏览 Facebook 模块样例,该样例位于 "New Project"(新建项目)> "Samples"(样例)> "NetBeans Modules"(NetBeans 模块)> "Facebook Module Sample"(Facebook 模块样例)。

另请参见

有关使用 NetBeans IDE 开发 Java EE 应用程序的更多信息,请参见以下资源:

要发送意见和建议、获得支持以及随时了解 NetBeans IDE Java EE 开发功能的最新开发情况,请加入 邮件列表

要发送意见和建议、获得支持以及随时了解有关在 NetBeans 平台上开发 RCP 应用程序的主题,请加入 邮件列表

get support for the NetBeans

Support


By use of this website, you agree to the NetBeans Policies and Terms of Use. © 2018, Oracle Corporation and/or its affiliates. Sponsored by Oracle logo