Delphi:XE8

看了好几天的资料了,也没有弄出来一个REST程序,尝试了XE8中带的例子,也都没有搞懂。我在网上不断搜索,看是否能够找到适合自己的文章,希望能够做出来一个REST的小例子,万幸,终于弄出来一个了!

这个小程序是把IP地址发送到淘宝的REST API,得到淘宝IP库返回的解析结果,先看看运行效果吧!

这是一个REST客户端程序,既然自己暂时编不出来REST服务器,那么最简单就是找一个可以尝试的REST服务器,所以我用这种方法先编一个RESET客户端程序,对REST程序了解一下!我们先看看我这个小程序使用了哪些控件:

RESTClient1: TRESTClient;:是REST客户端管理类。

RESTRequest1: TRESTRequest;:负责REST请求相关的工作,处理请求用的参数等。

RESTResponse1: TRESTResponse:负责REST请求返回的结果,HTTP状态码和返回结果等。

这个小程序的整个单元的源代码在下面:

unit Unit2;interfaceusesWinapi.Windows, Winapi.Messages, System.SysUtils, System.Variants,System.Classes, Vcl.Graphics,Vcl.Controls, Vcl.Forms, Vcl.Dialogs, IPPeerClient, Vcl.StdCtrls, REST.Client,Data.Bind.Components, Data.Bind.ObjectScope;typeTForm2 = class(TForm)RESTClient1: TRESTClient;RESTRequest1: TRESTRequest;RESTResponse1: TRESTResponse;Button1: TButton;Memo1: TMemo;Edit1: TEdit;Label1: TLabel;procedure Button1Click(Sender: TObject);private{ Private declarations }public{ Public declarations }end;varForm2: TForm2;implementationuses System.json;{$R *.dfm}procedure TForm2.Button1Click(Sender: TObject);
varJO, JData: TJSONObject;code: string;temp: string;
beginRESTClient1.BaseURL := 'http://ip.taobao.com//service/getIpInfo.php?ip=' +trim(Edit1.Text);RESTRequest1.Execute;// 清理先前数据Memo1.Clear;Memo1.Lines.Add('请求时间:' + Formatdatetime('yyyy-mm-dd hh:mm:ss zzz', now)+ #13#10);// 在memo中显示得到数据temp := temp + '原始数据:' + #13#10;temp := temp + RESTResponse1.Content + #13#10;Memo1.Lines.Add(temp);// 解析得到的JSON数据JO := TJSONObject.ParseJSONValue(RESTResponse1.Content) as TJSONObject;// 得到错误编号code := (JO.Get('code').JsonValue as TJSONString).ToString;if code = '0' thenbegin// 解析具体数据JData := JO.Get('data').JsonValue as TJSONObject;temp := '解析的详细数据' + #13#10;// ISPtemp := temp + ' I S P:' + (JData.Get('isp').JsonValue as TJSONString).ToString + #13;Memo1.Lines.Add(temp);// 国家temp := '国家:' + (JData.Get('country').JsonValue as TJSONString).ToString + #13;Memo1.Lines.Add(temp);// 地区temp := '地区:' + (JData.Get('area').JsonValue as TJSONString).ToString + #13;Memo1.Lines.Add(temp);// 省份temp := '省份:' + (JData.Get('region').JsonValue as TJSONString).ToString + #13;Memo1.Lines.Add(temp);// 城市temp := '城市:' + (JData.Get('city').JsonValue as TJSONString).ToString + #13#10;Memo1.Lines.Add(temp);end;end;end.

源代码下载:

http://download.csdn.net/detail/sunylat/8781273

参考资料:

淘宝IP地址查询
http://ip.taobao.com/instructions.php

http://blog.csdn.net/maxwoods/article/details/24265667

http://www.cnblogs.com/xalion/p/3370459.html

http://blog.csdn.net/sunylat/article/details/41407945

转载于:https://www.cnblogs.com/sunylat/p/6119065.html

我的第一个REST客户端程序!相关推荐

  1. java gui 怎么添加背景图片_三分钟教你学会用java写客户端程序!!速进!!

    写了这么多期的代码, 一直都是在控制台里面, 都没有像别的软件那样, 可以有一个桌面客户端的形式, 可以用鼠标点, 用键盘输入. 下面我们就来看看, 怎么用Java写一个客户端程序. 开局还是我们熟悉 ...

  2. 请教如何改善C#中socket通信机客户端程序的健壮性

    请教如何改善c#中socket通信机客户端程序的健壮性 我是做socket的新手,最近做了一个socket客户端程序,连接server的时候,如果server存在,并且允许连接的话,程序无错,正常执行 ...

  3. linux邮件收发程序流程图,[源码和文档分享]基于C语言和TCP Socket实现的Linux环境下的邮件收发客户端程序...

    一.项目题目及功能 项目题目:设计一个邮件收发客户端程序 功能:设置邮件账户.接收服务器和发送服务器等 接收邮件并显示在一个列表里 编写.发送新邮件 可暂不考虑邮件内容的编码/解码问题 删除邮件 邮件 ...

  4. 计网实验c/c++ 电子邮件客户端程序实现发送接收邮件

    参照教材 6.5 节原理,设计一个电子邮件客户端程序. 可实现发送与接受. 如果发送邮件出去接受不到请把代码中的输出注释取消,运行确定错误地点 不懂的评论问 base64在线转码: https://b ...

  5. linux c邮件客户端,[源码和文档分享]基于C语言和TCP Socket实现的Linux环境下的邮件收发客户端程序...

    一.项目题目及功能 项目题目:设计一个邮件收发客户端程序 功能:设置邮件账户.接收服务器和发送服务器等 接收邮件并显示在一个列表里 编写.发送新邮件 可暂不考虑邮件内容的编码/解码问题 删除邮件 邮件 ...

  6. 我的邮箱客户端程序Popmail

    05年的时候写了一个邮箱客户端程序.当时主要目的是研究POP3和SMTP协议,同时锻炼自己的网络编程能力.当然了,如果自己写的邮箱客户端能够满足自身的日常工作需要,而不是频繁的登录不同的网页邮箱,那就 ...

  7. python写tcp通信程序_一个简单的基于TCP通信的服务器端与客户端程序

    一,概述 1,客户端: 创建客户端套接字对象 和服务端套接字建立连接 发送数据 接收数据 关闭客户端套接字 2,服务器端: 创建服务端端套接字对象 绑定端口号 设置监听 等待接受客户端的连接请求 接收 ...

  8. 使用 acl 库编写发送邮件的客户端程序

    2019独角兽企业重金招聘Python工程师标准>>> 邮件做为最早和最广的互联应网用之一,已经与人们的生活息息相关.我们虽然经常使用 Outlook Express/Outlook ...

  9. 一起学WPF系列(2):第一个WPF应用程序

    概述 Windows Presentation Foundation (WPF) 是下一代显示系统,用于生成能带给用户震撼视觉体验的 Windows 客户端应用程序.使用 WPF,您可以创建广泛的独立 ...

最新文章

  1. python串口通信_python通信串口pyserial安装及常用语句
  2. Redis数据库(二)——数据类型
  3. python变量贡献率排序_3.2.5 贡献度分析
  4. 测试双打:模拟,假人和存根
  5. vs2015web项目无法加载64位c++的dll,提示试图加载不正确的格式
  6. 制作 小 linux 教程,【NanoPi NEO Plus2开发板试用体验】编译uboot和linux制作最小根文件系统制作刷机包---详细教程...
  7. 关于webstorm链接不上SVN的解决办法
  8. 【交易技术前沿】浅析基金业推进数据治理的阻碍及应对建议
  9. 新手如何学习单片机,一套很好的51单片机教程
  10. python量化交易策略实例_Python进阶量化交易:听说有个回测框架叫backtrader
  11. 2021-07-19支付宝扫码点餐推广怎么做(干货来了)
  12. 刷题集--贪吃的九头龙
  13. [Shiro教程] Shiro 教程基于SSM(SpringMVC + Spring + Mybatis)EHCache版本
  14. 涨知识!原来华为手机摄像头还有这些高级玩法,学会轻松提高工作效率
  15. 题目1 求Sum=x+xx+xxx+xxxx+xxx+xx+x的值,其中x是一个1~9的数字。从键盘上输入任意1~9的数字(如输入此范围外的数据,不处理该数据,程序提醒后继续输入),请输出Sum的结果
  16. 2023年电工杯数学建模竞赛AB题思路代码论文资料汇总贴
  17. ubuntu/linux系统管理(12)Ubuntu 22.04 安装文件比对工具Meld替代Beyond Compare
  18. SQL Server部分知识的整理
  19. MongoDB(三)——图片存储
  20. CCNA2.0笔记_动态路由

热门文章

  1. 几个常用算法的适应场景及其优缺点
  2. centos7安装oracle12c 二
  3. ROS(Robot Operating System)笔记 : 2.创建并配置package
  4. JavaFx导出文件
  5. magento2邮件调试方法
  6. ZooKeeper1 利用虚拟机搭建自己的ZooKeeper集群
  7. MySQL5.6 更改字段属性仍旧会锁全表,注意这个坑!
  8. [JavaScript] DOM操作技术
  9. 2057. 值相等的最小索引
  10. assign复制对象_JavaScript标准对象:assign,values,hasOwnProperty和getOwnPropertyNames方法介绍...