我的第一个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
我的第一个REST客户端程序!相关推荐
- java gui 怎么添加背景图片_三分钟教你学会用java写客户端程序!!速进!!
写了这么多期的代码, 一直都是在控制台里面, 都没有像别的软件那样, 可以有一个桌面客户端的形式, 可以用鼠标点, 用键盘输入. 下面我们就来看看, 怎么用Java写一个客户端程序. 开局还是我们熟悉 ...
- 请教如何改善C#中socket通信机客户端程序的健壮性
请教如何改善c#中socket通信机客户端程序的健壮性 我是做socket的新手,最近做了一个socket客户端程序,连接server的时候,如果server存在,并且允许连接的话,程序无错,正常执行 ...
- linux邮件收发程序流程图,[源码和文档分享]基于C语言和TCP Socket实现的Linux环境下的邮件收发客户端程序...
一.项目题目及功能 项目题目:设计一个邮件收发客户端程序 功能:设置邮件账户.接收服务器和发送服务器等 接收邮件并显示在一个列表里 编写.发送新邮件 可暂不考虑邮件内容的编码/解码问题 删除邮件 邮件 ...
- 计网实验c/c++ 电子邮件客户端程序实现发送接收邮件
参照教材 6.5 节原理,设计一个电子邮件客户端程序. 可实现发送与接受. 如果发送邮件出去接受不到请把代码中的输出注释取消,运行确定错误地点 不懂的评论问 base64在线转码: https://b ...
- linux c邮件客户端,[源码和文档分享]基于C语言和TCP Socket实现的Linux环境下的邮件收发客户端程序...
一.项目题目及功能 项目题目:设计一个邮件收发客户端程序 功能:设置邮件账户.接收服务器和发送服务器等 接收邮件并显示在一个列表里 编写.发送新邮件 可暂不考虑邮件内容的编码/解码问题 删除邮件 邮件 ...
- 我的邮箱客户端程序Popmail
05年的时候写了一个邮箱客户端程序.当时主要目的是研究POP3和SMTP协议,同时锻炼自己的网络编程能力.当然了,如果自己写的邮箱客户端能够满足自身的日常工作需要,而不是频繁的登录不同的网页邮箱,那就 ...
- python写tcp通信程序_一个简单的基于TCP通信的服务器端与客户端程序
一,概述 1,客户端: 创建客户端套接字对象 和服务端套接字建立连接 发送数据 接收数据 关闭客户端套接字 2,服务器端: 创建服务端端套接字对象 绑定端口号 设置监听 等待接受客户端的连接请求 接收 ...
- 使用 acl 库编写发送邮件的客户端程序
2019独角兽企业重金招聘Python工程师标准>>> 邮件做为最早和最广的互联应网用之一,已经与人们的生活息息相关.我们虽然经常使用 Outlook Express/Outlook ...
- 一起学WPF系列(2):第一个WPF应用程序
概述 Windows Presentation Foundation (WPF) 是下一代显示系统,用于生成能带给用户震撼视觉体验的 Windows 客户端应用程序.使用 WPF,您可以创建广泛的独立 ...
最新文章
- python串口通信_python通信串口pyserial安装及常用语句
- Redis数据库(二)——数据类型
- python变量贡献率排序_3.2.5 贡献度分析
- 测试双打:模拟,假人和存根
- vs2015web项目无法加载64位c++的dll,提示试图加载不正确的格式
- 制作 小 linux 教程,【NanoPi NEO Plus2开发板试用体验】编译uboot和linux制作最小根文件系统制作刷机包---详细教程...
- 关于webstorm链接不上SVN的解决办法
- 【交易技术前沿】浅析基金业推进数据治理的阻碍及应对建议
- 新手如何学习单片机,一套很好的51单片机教程
- python量化交易策略实例_Python进阶量化交易:听说有个回测框架叫backtrader
- 2021-07-19支付宝扫码点餐推广怎么做(干货来了)
- 刷题集--贪吃的九头龙
- [Shiro教程] Shiro 教程基于SSM(SpringMVC + Spring + Mybatis)EHCache版本
- 涨知识!原来华为手机摄像头还有这些高级玩法,学会轻松提高工作效率
- 题目1 求Sum=x+xx+xxx+xxxx+xxx+xx+x的值,其中x是一个1~9的数字。从键盘上输入任意1~9的数字(如输入此范围外的数据,不处理该数据,程序提醒后继续输入),请输出Sum的结果
- 2023年电工杯数学建模竞赛AB题思路代码论文资料汇总贴
- ubuntu/linux系统管理(12)Ubuntu 22.04 安装文件比对工具Meld替代Beyond Compare
- SQL Server部分知识的整理
- MongoDB(三)——图片存储
- CCNA2.0笔记_动态路由
热门文章
- 几个常用算法的适应场景及其优缺点
- centos7安装oracle12c 二
- ROS(Robot Operating System)笔记 : 2.创建并配置package
- JavaFx导出文件
- magento2邮件调试方法
- ZooKeeper1 利用虚拟机搭建自己的ZooKeeper集群
- MySQL5.6 更改字段属性仍旧会锁全表,注意这个坑!
- [JavaScript] DOM操作技术
- 2057. 值相等的最小索引
- assign复制对象_JavaScript标准对象:assign,values,hasOwnProperty和getOwnPropertyNames方法介绍...