Delphi:XE8

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

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

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

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

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

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

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

  1. unit Unit2;
  2. interface
  3. uses
  4. Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants,
  5. System.Classes, Vcl.Graphics,
  6. Vcl.Controls, Vcl.Forms, Vcl.Dialogs, IPPeerClient, Vcl.StdCtrls, REST.Client,
  7. Data.Bind.Components, Data.Bind.ObjectScope;
  8. type
  9. TForm2 = class(TForm)
  10. RESTClient1: TRESTClient;
  11. RESTRequest1: TRESTRequest;
  12. RESTResponse1: TRESTResponse;
  13. Button1: TButton;
  14. Memo1: TMemo;
  15. Edit1: TEdit;
  16. Label1: TLabel;
  17. procedure Button1Click(Sender: TObject);
  18. private
  19. { Private declarations }
  20. public
  21. { Public declarations }
  22. end;
  23. var
  24. Form2: TForm2;
  25. implementation
  26. uses System.json;
  27. {$R *.dfm}
  28. procedure TForm2.Button1Click(Sender: TObject);
  29. var
  30. JO, JData: TJSONObject;
  31. code: string;
  32. temp: string;
  33. begin
  34. RESTClient1.BaseURL := 'http://ip.taobao.com//service/getIpInfo.php?ip=' +
  35. trim(Edit1.Text);
  36. RESTRequest1.Execute;
  37. // 清理先前数据
  38. Memo1.Clear;
  39. Memo1.Lines.Add('请求时间:' + Formatdatetime('yyyy-mm-dd hh:mm:ss zzz', now)
  40. + #13#10);
  41. // 在memo中显示得到数据
  42. temp := temp + '原始数据:' + #13#10;
  43. temp := temp + RESTResponse1.Content + #13#10;
  44. Memo1.Lines.Add(temp);
  45. // 解析得到的JSON数据
  46. JO := TJSONObject.ParseJSONValue(RESTResponse1.Content) as TJSONObject;
  47. // 得到错误编号
  48. code := (JO.Get('code').JsonValue as TJSONString).ToString;
  49. if code = '0' then
  50. begin
  51. // 解析具体数据
  52. JData := JO.Get('data').JsonValue as TJSONObject;
  53. temp := '解析的详细数据' + #13#10;
  54. // ISP
  55. temp := temp + ' I S P:' + (JData.Get('isp').JsonValue as TJSONString)
  56. .ToString + #13;
  57. Memo1.Lines.Add(temp);
  58. // 国家
  59. temp := '国家:' + (JData.Get('country').JsonValue as TJSONString)
  60. .ToString + #13;
  61. Memo1.Lines.Add(temp);
  62. // 地区
  63. temp := '地区:' + (JData.Get('area').JsonValue as TJSONString).ToString + #13;
  64. Memo1.Lines.Add(temp);
  65. // 省份
  66. temp := '省份:' + (JData.Get('region').JsonValue as TJSONString)
  67. .ToString + #13;
  68. Memo1.Lines.Add(temp);
  69. // 城市
  70. temp := '城市:' + (JData.Get('city').JsonValue as TJSONString)
  71. .ToString + #13#10;
  72. Memo1.Lines.Add(temp);
  73. end;
  74. end;
  75. 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客户端程序!的更多相关文章

  1. 用antd和webview打造一款大数据客户端程序

    要想提高工作效率,必须得有好的工具.大数据有很多组件,但是邪了门儿的就是,竟然没有一个好用的客户端程序. 没办法,我只好用antd+webview自己做了一款跨平台的桌面应用. 先看下效果. 这是gi ...

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

    我是做Socket的新手,最近做了一个Socket客户端程序,连接Server的时候,如果server存在,并且允许连接的话,程序无错,正常执行:但是如果Server不存在,或者拒绝连接,程序就会卡住 ...

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

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

  4. UWP使用AppService向另一个UWP客户端应用程序提供服务

    原文:UWP使用AppService向另一个UWP客户端应用程序提供服务 在上篇里,我使用的是寄宿在WPF上的WCF进行两个程序间的通信,在解决问题的同时,我的同事也在思考能否使用UWP来做这件事.于 ...

  5. 基于 SailingEase WinForm Framework 开发客户端程序(3:实现菜单/工具栏按钮的解耦及状态控制)

    本系列文章将详细阐述客户端应用程序的设计理念,实现方法. 本系列文章以  SailingEase WinForm Framework 为基础进行设计并实现,但其中的设计理念及方法,亦适用于任何类型的客 ...

  6. php编写tcp服务器和客户端程序

    这是我从别的地方看到的. 1.修改php.ini,打开extension=php_sockets.dll 2.客户端程序 SocketClient.php <?php set_time_limi ...

  7. 【转载】ASP.NET MVC Web API 学习笔记---第一个Web API程序

    1. Web API简单说明 近来很多大型的平台都公开了Web API.比如百度地图 Web API,做过地图相关的人都熟悉.公开服务这种方式可以使它易于与各种各样的设备和客户端平台集成功能,以及通过 ...

  8. 在公司内网上创建自己的 OSM.Planet 街道级别地图服务器及其客户端程序

    转自我的BLOG http://blog.csdn.net/goldenhawking/article/details/6402775  最近经过陛下点拨,涉猎了“OpenStreetMap”,做了不 ...

  9. 使用 Socket 通信实现 FTP 客户端程序(来自IBM)

    FTP 客户端如 FlashFXP,File Zilla 被广泛应用,原理上都是用底层的 Socket 来实现.FTP 客户端与服务器端进行数据交换必须建立两个套接字,一个作为命令通道,一个作为数据通 ...

随机推荐

  1. SlidingMenu的编译及使用

    1. 在github上有一个效果不错的开源库,SlidingMenu 最新的代码下载下来后,ExampleListActivity项目会报错:      No resource found that ...

  2. JS学习笔记(一)基本数据类型和对象类型

    js是一种弱类型的语言,所有的变量都用var进行声明,字符串用双引号或单引号括起来,常见基本数据类型为number,string,boolean等.如 var num = 123;或var num = ...

  3. hive join 优化

    common join : 即reducer join,瓶颈在shuffle阶段,会产生较大的网络io: map join:即把小表放前面,扫描后放入每个节点的内存,在map阶段进行匹配: 开启map ...

  4. jquery的$().each,$.each

    在jquery中,遍历对象和数组,经常会用到$().each和$.each(),两个方法.两个方法是有区别的,从而这两个方法在针对不同的操作上,显示了各自的特点. $().each,对于这个方法,在d ...

  5. nginx+php的配置

    作了N多次php环境的搭建,网上的方法还真是多,但是实际操作起来总有一些大大小小的出入,很多错误经常让我纠结不已.久病成医,渐渐地我自己就总结出了一些经验.自我感觉良好. 这种方法并非以前所流行的ap ...

  6. RHEL4-Partition Image系统备份(软件版)

    对于BBS,或Apache,PHP等相关网页的程序 备份: 1)/var/www/html目录,里面有PHP所写成的网页.此网页主要功能是从资料库中读取由信件存入的文章,或是使用者选择由网页输入资料时 ...

  7. flume-ng+Kafka+Storm+HDFS 实时系统组合

    http://www.aboutyun.com/thread-6855-1-1.html

  8. 微信开放框架-UCToo

    UCToo是一套简单,易用,开源的微信增值应用开发框架,帮助用户快捷的实现微信公众平台的个性化定制功能. http://www.uctoo.com/

  9. HDU 5446 Unknown Treasure(Lucas定理+CRT)

    [题目链接] http://acm.hdu.edu.cn/showproblem.php?pid=5446 [题目大意] 给出一个合数M的每一个质因子,同时给出n,m,求C(n,m)%M. [题解] ...

  10. Thread和ExecutorService(一)

    ExecutorService是Java并发包里面的一个线程池服务   线程池的优点 复用已有的线程,消除任务中创建线程的开销 通过优化线程的数量,提高性能,保证处理器一直处于忙的状态,而不必创建这么 ...