调用MobileAPI的设计(iOS篇)
调用MobileAPI的设计(iOS篇)
这一节讲如何发起网络请求。
iOS用于调用MobileAPI的第三方组件很多,我们这里采用的是以下组件:
1)ASIHTTPRequest,用于请求MobileAPI:http://allseeing-i.com/ASIHTTPRequest/
2)SBJson,2.3版本,用于解析JSON:http://stig.github.com/json-framework/
由于我们在MyLib中引用了SBJson,它里面有一个Category名为NSString+SBJSON,为了能使用它,请在
MyLib和MyApp项目中的Other Linker Falgs设为-all_load。
这一节内容非常芜杂,我将其分为以下几个部分:
1)将返回JSON格式的数据转换实体类
2)网络请求的封装——汇总API的配置文件
3)网络请求的封装——RemotingService横空出世
4)网络请求的封装——一些善后工作
5)数据缓存
6)自动重试
7)自动化实体生成器
此外,我们会在后续的章节,介绍Cookie的处理和时间校准机制,它们都和调用MobileAPI息息相关。
本文采取的例子是开源免费天气预报接口API以及全国所有地区代码!!(国家气象局提供):http://blog.csdn.net/enuola/article/details/7904090
先给出一个ASIHTTPRequest+SBJson的例子:YoungHeart-Chapter-05.zip
关键代码如下所示:

- (void)loadData {
NSURL *url = [NSURL URLWithString:@"http://www.weather.com.cn/data/sk/101010100.html"];
ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
[request setDelegate:self];
[request startAsynchronous];
} - (void)requestFinished:(ASIHTTPRequest *)request {
NSString *jsonStr =[request responseString]; SBJsonParser *jsonParser = [[SBJsonParser alloc] init]; NSMutableDictionary *dict = [jsonParser objectWithString:jsonStr];
NSLog(@"%@",dict); [jsonParser release];
id jsonValue = [jsonStr JSONValue];
} - (void)requestFailed:(ASIHTTPRequest *)request {
UIAlertView* alertView = [[UIAlertView alloc]initWithTitle: @"粗锉啦" message: @"Network Error" delegate: self cancelButtonTitle: @"OK" otherButtonTitles: nil];
[alertView show];
[alertView release];
}

调用MobileAPI的设计(iOS篇)的更多相关文章
- 无线客户端框架设计(5):调用MobileAPI的设计(iOS篇)
这一节讲如何发起网络请求. iOS用于调用MobileAPI的第三方组件很多,我们这里采用的是以下组件: 1)ASIHTTPRequest,用于请求MobileAPI:http://allseeing ...
- QQ聊天界面的布局和设计(IOS篇)-第一季
我写的源文件整个工程会再第二季中发上来~,存在百度网盘, 感兴趣的童鞋, 可以关注我的博客更新,到时自己去下载~.喵~~~ QQChat Layout - 第一季 一.准备工作 1.将假数据messa ...
- QQ聊天界面的布局和设计(IOS篇)-第二季
QQChat Layout - 第二季 本来第二季是快写好了, 也花了点功夫, 结果gitbook出了点问题, 给没掉了.有些细节可能会一带而过, 如有疑问, 相互交流进步~. 在第一季中我们完成了Q ...
- 自定义生命周期的设计(iOS篇)
自定义生命周期的设计(iOS篇) 首先要确定一点,我们的App,要基于XIB文件进行编程,而不是在每个相应的ViewController里面去手动创建页面的每个控件.这样做的好处是,将页面布局与业务逻 ...
- 无线客户端框架设计(4):自定义生命周期的设计(iOS篇)
首先要确定一点,我们的App,要基于XIB文件进行编程,而不是在每个相应的ViewController里面去手动创建页面的每个控件.这样做的好处是,将页面布局与业务逻辑彻底隔离.于是我们可以把xib的 ...
- 项目结构的设计(iOS篇)
项目结构的设计(iOS篇) 本文附带源码:YoungHeart-Chapter-02.zip 在设计任何一个框架之前,都应规划好项目结构. 假定Git作为我们的项目管理工具.我们要建立两个仓库,一个用 ...
- 将JSON映射为实体对象(iOS篇)
将JSON映射为实体对象(iOS篇) iOS开发人员已经习惯于将JSON转换为字典或者数组来进行操作了,接下来我要做的事情,可能匪夷所思,但是,对WP和Android开发人员而言,他们更倾向于将JSO ...
- 架构设计:远程调用服务架构设计及zookeeper技术详解(下篇)
一.下篇开头的废话 终于开写下篇了,这也是我写远程调用框架的第三篇文章,前两篇都被博客园作为[编辑推荐]的文章,很兴奋哦,嘿嘿~~~~,本人是个很臭美的人,一定得要截图为证: 今天是2014年的第一天 ...
- 利用内存结构及多线程优化多图片下载(IOS篇)
利用内存结构及多线程优化多图片下载(IOS篇) 前言 下载地址, 后续发布, 请继续关注本blog 在IOS中,我们常常遇到多图片下载的问题.最简单的解决方案是直接利用别人写好的框架.但是这如同练武, ...
随机推荐
- PHP_零基础学php_2变量、预定义变量、预定义常量、表达式、运算符、程序控制流程
1.变量 PHP中使用$后跟变量名表示一个变量,变量名区分大小写. 变量的数据类型 整数类型 浮点类型 字符串类型 布尔类型 数组类型 对象 <html> <head> < ...
- MapReduce 编程模型
一.简单介绍 1.MapReduce 应用广泛的原因之中的一个在于它的易用性.它提供了一个因高度抽象化而变得异常简单的编程模型. 2.从MapReduce 自身的命名特点能够看出,MapReduce ...
- c# 文件同步服务器,iis 集群 ,代码同步(二)
打算自己做一个 集群 代码同步软件. 基于Socket 和 FileSystemWatcher .
- C# .NET ASP.NET 其中关系你了解多少
有些人一直在做这方面..但突然有人来问你这些问题..估计有很多答不上来. 1..NET是一个平台,一个抽象的平台的概念. .NET平台其本身实现的方式其实还是库,抽象层面上来看是一个平台. 个人理解. ...
- hibernate的orphanRemoval
在@OneToMany与@OneToOne中使用orphanRemoval = true时候 改动保存时候setXXX org.springframework.orm.hibernate3.Hiber ...
- 使用AndroidStudio快速开发教程
关于AndroidStudio的使用 参考:http://www.codes51.com/article/detail_98914.html 1.对于开发环境的通性:编写 调试 视图 一般的开发 ...
- jQuery实现表格行的动态增加与删除
删除之前删除2行后: 1<script> 8 $(document).ready(function(){ 9 //<tr/>居中 10 $("#tab tr" ...
- 创建android phonegap项目
一. 首先需要在Eclipse中创建一个Android项目 打开Eclipse,打开File->New->Project 选择Android Application Project点击Ne ...
- java基础知识汇总
1. 类的访问控制权限共有两种:public和默认.默认级别的类只能被同一个包中的类看到,包外不可见. 2. 类成员的访问权限共有四种:public,protected,private ...
- UC编程:环境变量的查询与修改
每个程序中都维护一个指向环境变量的指针char **environ; 子进程会从父进程继承环境变量.子进程环境变量的修改不一定会影响父进程 无关的多个进程之间修改环境变量不会互相影响 打印环境变量 [ ...