我的第一个REST客户端程序!
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;
- interface
- uses
- Winapi.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;
- type
- TForm2 = 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;
- var
- Form2: TForm2;
- implementation
- uses System.json;
- {$R *.dfm}
- procedure TForm2.Button1Click(Sender: TObject);
- var
- JO, JData: TJSONObject;
- code: string;
- temp: string;
- begin
- RESTClient1.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' then
- begin
- // 解析具体数据
- JData := JO.Get('data').JsonValue as TJSONObject;
- temp := '解析的详细数据' + #13#10;
- // ISP
- temp := 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
http://blog.csdn.net/sunylat/article/details/46399987
我的第一个REST客户端程序!的更多相关文章
- 用antd和webview打造一款大数据客户端程序
要想提高工作效率,必须得有好的工具.大数据有很多组件,但是邪了门儿的就是,竟然没有一个好用的客户端程序. 没办法,我只好用antd+webview自己做了一款跨平台的桌面应用. 先看下效果. 这是gi ...
- 请教如何改善C#中socket通信机客户端程序的健壮性
我是做Socket的新手,最近做了一个Socket客户端程序,连接Server的时候,如果server存在,并且允许连接的话,程序无错,正常执行:但是如果Server不存在,或者拒绝连接,程序就会卡住 ...
- 我的邮箱客户端程序Popmail
05年的时候写了一个邮箱客户端程序.当时主要目的是研究POP3和SMTP协议,同时锻炼自己的网络编程能力.当然了,如果自己写的邮箱客户端能够满足自身的日常工作需要,而不是频繁的登录不同的网页邮箱,那就 ...
- UWP使用AppService向另一个UWP客户端应用程序提供服务
原文:UWP使用AppService向另一个UWP客户端应用程序提供服务 在上篇里,我使用的是寄宿在WPF上的WCF进行两个程序间的通信,在解决问题的同时,我的同事也在思考能否使用UWP来做这件事.于 ...
- 基于 SailingEase WinForm Framework 开发客户端程序(3:实现菜单/工具栏按钮的解耦及状态控制)
本系列文章将详细阐述客户端应用程序的设计理念,实现方法. 本系列文章以 SailingEase WinForm Framework 为基础进行设计并实现,但其中的设计理念及方法,亦适用于任何类型的客 ...
- php编写tcp服务器和客户端程序
这是我从别的地方看到的. 1.修改php.ini,打开extension=php_sockets.dll 2.客户端程序 SocketClient.php <?php set_time_limi ...
- 【转载】ASP.NET MVC Web API 学习笔记---第一个Web API程序
1. Web API简单说明 近来很多大型的平台都公开了Web API.比如百度地图 Web API,做过地图相关的人都熟悉.公开服务这种方式可以使它易于与各种各样的设备和客户端平台集成功能,以及通过 ...
- 在公司内网上创建自己的 OSM.Planet 街道级别地图服务器及其客户端程序
转自我的BLOG http://blog.csdn.net/goldenhawking/article/details/6402775 最近经过陛下点拨,涉猎了“OpenStreetMap”,做了不 ...
- 使用 Socket 通信实现 FTP 客户端程序(来自IBM)
FTP 客户端如 FlashFXP,File Zilla 被广泛应用,原理上都是用底层的 Socket 来实现.FTP 客户端与服务器端进行数据交换必须建立两个套接字,一个作为命令通道,一个作为数据通 ...
随机推荐
- JavaScript知识(一)
首先想为大家分享两句话: 侧耳听智慧,专心求聪明,呼求明哲,扬声求聪明.——箴言2:2-3 你要保守你心,胜过保守一切,因为一生的果效,是由心发出.——箴言 4:23 ...O(∩_∩)O...今天学 ...
- [转]PB 基本语句 循环语句
PB 基本语句一.赋值语句赋值语句用于给变量.对象属性赋值,这是应用程序中使用最频繁的语句,其语法格式为:variablename = expression_r其中:⑴variablename是变量名 ...
- python 调用hive查询实现类似存储过程
需求:数据仓库中所有表的定义结构保存到新的文件中,保存后类似下面数据,重复的数据只保留7月份即可 ****************ods_log_info*****************lid st ...
- BZOJ 3774: 最优选择( 最小割 )
最小割...二分染色然后把颜色不同的点的源汇反过来..然后就可以做了. 某个点(x,y): S->Id(x,y)(回报), Id(x,y)->T(代价), Id(i,j)&& ...
- Cocos2dx游戏开发系列笔记13:一个横版拳击游戏Demo完结篇
懒骨头(http://blog.csdn.net/iamlazybone QQ:124774397 ) 写下这些东西的同时 旁边放了两部电影 周星驰的<还魂夜> 甄子丹的<特殊身份& ...
- R与数据分析旧笔记(⑦)回归诊断
回归诊断 回归诊断 1.样本是否符合正态分布假设? 2.是否存在离群值导致模型发生较大误差? 3.线性模型是否合理? 4.误差是否满足独立性.等方差.正态分布等假设条件? 5.是否存在多重共线性 正态 ...
- bzoj 2141 : 排队 分块
题目链接 2141: 排队 Time Limit: 4 Sec Memory Limit: 259 MBSubmit: 1169 Solved: 465[Submit][Status][Discu ...
- libmemcached安装及简单例子
libmemcached安装及简单例子 1.下载安装libmemcached $ wget http://launchpad.net/libmemcached/1.0/0.44/+download/ ...
- 展开字符串(dfs)
展开字符串 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Subm ...
- 一、Cocos2dx在visualStudio或者vc++中环境搭建(入门篇)
本文由qinning199原创,转载请注明:http://www.cocos2dx.net/?p=106 0.概述 Cocos2dx-win32的项目能够被向导生成 向导支持vs2008,vs2010 ...