Delphi XE8 IDHTTP1.get()方法從Servlet服务器取json数据
练习:JAVA 服务端(SERVLET3.1) + DELPHI客户端(IDHTTP) 三层开发。 练习笔记《Delphi XE8 IDHTTP1.get()方法從Servlet 服务器取json数据.doc》。 已经实现基本的 提交 新增、修改、删除、查询SQL命令功能。 开发环境: WIN7(TW) + ECLIPSE LUNA4.4 + MSSQL 2008R2 + JDK1.7.0.55 + TOMCAT8.0.24 SERVLET3.1 + MSSQL 2008 例子. 生成JSON结构数据。 可以这样传入参数(sql=“select top 2 * from t_app”) http://localhost:8080/msSQLDemo/User2Servlet?sql=select%20top%202%20*%20from%20t_app 结果: {"Result":[{"sys_name":"財務系統","app_id":"frm_acc_check","app_name":"票據登記"}, {"sys_name":"財務管理","app_id":"Frm_acc_checkCancel","app_name":"應收核銷作業"}]} 练习的项目,代码很乱。 在本示例中,我们探讨了如何在 Delphi XE8 中使用 IDHTTP1.get() 方法从一个基于 Servlet 3.1 的服务器获取 JSON 数据。这个过程涉及到 Delphi 客户端与 Java 服务端之间的通信,其中 JSON 用于数据交换格式。以下是详细的知识点解释: 1. **Servlet 服务器**: - Servlet 是 Java 平台上的一种组件,用于扩展 Web 服务器的功能。在本例中,Servlet 3.1 版本被用来处理来自 Delphi 客户端的 HTTP 请求,返回 JSON 结构的数据。 2. **Delphi 客户端**: - 使用 Delphi XE8,通过 Indy 库中的 TIdHTTP 对象来发送 HTTP 请求。TIdHTTP 提供了 get() 方法,用于执行 GET 请求,从而获取服务器资源。 3. **IDHTTP1.get() 方法**: - 这个方法用于向指定 URL 发送 GET 请求,并将响应内容存储在一个字符串流(TStringStream)中。在 Delphi 示例代码中,`idhttp1.get(url, stringStream)` 负责获取服务器返回的 JSON 数据。 4. **URL 编码**: - 当传递包含特殊字符(如空格或百分号 `%`)的参数时,需要进行 URL 编码。Delphi 示例中使用了 `HTTPEncode` 和 `UTF8Encode` 函数来编码 SQL 查询字符串,确保它们在 URL 中是安全的。 5. **HTTP 错误代码**: - 遇到的错误包括 HTTP/1.1 505(HTTP 版本不受支持)和 HTTP/1.1 500(内部服务器错误)。505 错误通常是因为服务器不支持客户端使用的 HTTP 版本,而 500 错误可能是因为服务器端的代码错误。在本例中,500 错误是因为 URL 参数中包含未正确编码的百分号 `%`。 6. **错误解决**: - 为了解决百分号 `%` 导致的 500 错误,需要在 Java 服务器端使用 `url.replaceAll("%(?![0-9a-fA-F]{2})", "%25")` 正则表达式来替换 `%` 字符。这将 `%` 字符转换为 `%25`,使其在 URL 中合法。 7. **JSON 数据交换**: - 服务器返回的 JSON 结构如 `{"Result": [{"sys_name": "財務系統", "app_id": "frm_acc_check", "app_name": "票據登記"}, {...}]}`,表示一个 JSON 对象,其中包含一个名为 "Result" 的数组,数组里包含多个对象,每个对象表示系统应用的信息。 8. **Delphi 代码解析**: - 在 Delphi 代码中,`btnQueryClick` 事件处理程序负责构建并发送 GET 请求。`sql` 变量包含了用户输入的 SQL 查询,`urlSql` 是经过编码的 SQL 查询,用于构造完整的请求 URL。 9. **数据处理**: - 获取到的 JSON 数据存储在 `stringStream` 中,然后转换成字符串 `str`,最后显示在 Memo 控件 `memo2` 中。 10. **兼容性考虑**: - Delphi 代码中的 `stringStream.Create('', 65001)` 使用 UTF-8 编码创建字符串流,确保能正确处理非 ASCII 字符。 通过这些步骤,Delphi 客户端可以成功地与 Java 服务端交互,执行 SQL 查询并获取 JSON 结果,从而实现数据的检索和展示。
剩余8页未读,继续阅读
- 粉丝: 15
- 资源: 43
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
- 1
- 2
前往页