我的第一个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;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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/405750.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

GB4208中规定的外壳防护等级IP

外壳防护等级IP 经常看到仪器设备的介绍中包括防护等级,例如IP67,IP50等,不同的防护等级到底对应的是什么级别的防护呢,国标GB4208中有明确的规定。现摘录相关的描述,供查看。

如何对linux文件进行编译,linux编译和执行命令都有哪些?该如何实现?

我们知道,Linux是比如手机、平板电脑、路由器、台式计算机计算机设备的核心,它们都使用着Linux系统。以现在来说,一个合格的开发者必须要对Linux有一定的了解,那么,下面就跟小编一起来看看Linux是如何编译及执行的吧。…

如何给虚拟机上的linux系统添加虚拟硬盘

From: http://www.ezloo.com/2008/03/vmware_linux.html 给vmware虚拟机上的linux系统添加一个虚拟硬盘,并对硬盘进行分区、格式化、给分区创建文件系统,实现挂载,自动挂载! 步骤如下:保证你的linux系统处于关闭状态&a…

linux命令行打开写字板,在Linux操作系统中使用手写板

2009-07-28/14:24手写输入系统的出现拉近了大家与计算机之间的距离,使我们无须苦练输入法。此外,它也是绘画和平面设计爱好者手里的利器。Windows系统下使用手写板已经是司空见惯的事情了,但要在Linux中使用手写板呢?手写板和Linu…

Linux 普通用户和超级用户的切换

ubuntu16环境下。 1、输入su - 2、输入sudo passwd root,修改root密码。 3、切换普通用户 输入 su - jianwang16

winfrom 图片互传

private void button1_Click(object sender, EventArgs e)//从硬盘打开图片显示在窗体里面{OpenFileDialog op new OpenFileDialog();//造一个打开对话框DialogResult dr op.ShowDialog();//将打开对话框显示出来if(drDialogResult.OK) //如果点的是"打开"{FileStre…

Silverlight动画制作之From/To/By基本动画

Silverlight动画制作之From/To/By基本动画From/To/By基本动画其中包含了三个最重要的属性:From;To;By。From指的是对象目标属性的起始值,To指的是对象目标属性的结束值,By指的是结束状态相对于起始状态的偏移量。这里我…

在 Delphi 中调用 JavaScript(二)

本例效果图: 代码文件: unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 class(TForm) Memo1: TMemo; Button1: TButton; Edit1: TEdit; Label1: TLabel; procedure Button1Click(…

linux可配置哪些服务,linux操作系统下服务配置

linux操作系统下服务配置 (5页)本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦!17.90 积分实用标准文案数学与信息技术学院实 验 报 告实验课程名称: 信息系统与系统集成 实验项目名称&…

你会给别人提反馈吗?

几个例子 你会提反馈吗?不急回答,我们先来看几个例子。 例子一: 项目经理:“xxx,我本来对你的期望特别高,但是你让我有些失望啊。” xxx:“啊,不知道哪些地方做的不好呢?” 项目经理…

关于 CFileDialog 对话框多选功能的一个问题

From: http://www.vckbase.com/document/viewdoc/?id1544 最近有位读者来信指出:《在线杂志》第26期中有一篇文章:“再谈 CFileDialog 对话框的定制”,其例子程序有一个bug。如果多选时选中的文件过多,那么后面选中的文件将无效…

linux winrar 安装目录,WinRAR 5.61发布,提供Linux版本下载,附安装方法

压缩及解压缩工具WinRAR 5.61已经发布下载,提供WinRAR (32/64 bit) 5.61、RAR 5.61 for Linux、RAR for Android、RAR 5.61 for Mac OS X、RAR 5.61 for FreeBSD安装包下载。WinRAR 5.61是一款流行的压缩工具,它支持鼠标播放及外壳扩展功能,支…

luceda ipkiss教程 53:在版图上加中文

要在版图上加中文,如: 可以通过如下方法实现: 首先,可以在ppt中加入文本框,在文本框中输入想要加到版图上的中文内容,如,复旦大学,并将文本框存为windows位图。 其次,通…