iOS开发那些事-iOS网络编程同步GET方法请求编程
iOS SDK为HTTP请求提供了同步和异步请求两种不同的API,而且可以使用GET或POST等请求方法。我们先了解其中最为简单的同步GET方法请求。
为了学习这些API的使用MyNotes“备忘录”应用实例,数据来源于服务器端,而不是本地的Notes.xml(或Notes.json)文件。
首先实现查询业务,查询业务请求可以在主视图控制器MasterViewController类中实现,其中MasterViewController.h代码如下:
#import UIKit/UIKit.h #import “NSString+URLEncoding.h” #import “NSNumber+Message.h”
@end
其中引入头文件NSString+URLEncoding.h文件是在程序中需要对URL进行编码处理。引入头文件NSNumber+Message.h文件是处理把服务器返回消息代码转换为用户能看懂的消息。MasterViewController.m中的主要代码如下:
- (void)viewDidLoad [super viewDidLoad]; self.navigationItem.leftBarButtonItem = self.editButtonItem; self.detailViewController = (DetailViewController *) [[self.splitViewController.viewControllers lastObject] topViewController]; [self startRequest]; ①
其中第①行代码[self startRequest]调用自己的方法startRequest实现请求Web Service。MasterViewController.m中的startRequest方法代码如下: * 开始请求Web Service -(void)startRequest NSString *strURL = [[NSString alloc] initWithFormat: @”http://iosbook3/mynotes/webservice.php?email=%@ type=%@ action=%@”, @” 你的iosbook1.com用户邮箱 ”,@”JSON”,@”query”]; ① NSURL *url = [NSURL URLWithString:[strURL URLEncodedString]]; ② NSURLRequest *request = [[NSURLRequest alloc] initWithURL:url]; ③ NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil]; ④ NSLog(@”请求完成…”); NSDictionary *resDict = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingAllowFragments error:nil]; [self reloadView:resDict]; ⑤ }
此外,我们在前文中还提到了一个分类NSString (URLEncoding),它的作用是对URL编码和解码,它的代码如下:
@interface NSString (URLEncoding)
@end
第①行代码CFURLCreateStringByAddingPercentEscape函数是Core Foundation框架提供的C函数,可以把内容转换成为URL编码。第②行参数指定了将本身为非法URL字符不进行编码的字符集合,例如:“!*()”等符号。第③行参数是将本身为合法URL字符需要进行编码的字符集合。
第③行代码CFURLCreateStringByReplacingPercentEscapesUsingEncoding函数是Core Foundation框架提供的C函数,它与上面CFURLCreateStringByAddingPercentEscape函数截然相反,是进行URL解码的。第④行的参数指定不进行解码的字符集。
Foundation框架也提供了基于Objective-C的方法进行URL编码和解码,与CFURLCreateStringByAddingPercentEscape函数对应的NSString方法是stringByAddingPercentEscapesUsingEncoding。与CFURLCreateStringByReplacingPercentEscapesUsingEncoding函数对应的NSString方法是stringByReplacingPercentEscapesUsingEncoding:,由于这些方法不能自定义是否要编码和解码的字符集,因此没有上面的函数灵活。
iOS开发那些事-iOS网络编程异步GET方法请求编程iOS多个线程发起相同请求,避免重复 有时候在调用多个模块时,会对同一个API进行多次请求,但因为内容都是一样的,所以最好就是加上锁,防止重复请求造成网络资源浪费
iOS开发:日志记录及AFNetworking请求 本篇文章主要目的是为了将用户操作习惯记录到本地文件,然后定期或者根据实际需要打包压缩上传到服务器,用以处理用户在闪退的时候,或需要详细了解具体某个用户在这一段时间的操作习惯。由于要压缩上传本地日志,顺道集成了AFNetWorking了post和get的接口请求,以及请求是接口失败后,错误信息显示,这个在开发的时候特别方便,后台可以在根据这些错误日志查询对应的问题。
在手机中打开safari,在地址栏输入刚才获取到的ip地址,以及fiddler配置好的端口号(默认是8888);
在ios开发中,网络请求是不可以少的,说到网络请求可能用的最多的就是第三方的比人比较有名的AFNetworking、Alamofire等,原生的用的少。今天就用ios提供的原生方法来打造属于自己的一个网络请求工具吧。
关东升 国内著名iOS/Cocos技术作家,iOS技术顾问,Cocos最有价值专家(CVP),智捷课堂首席培训专家。担任51CTO社区iOS技术顾问。 著有多部移动开发畅销书。
相关文章
- iOS小技能:本地化(Internationalization & Localization)
- iOS Charles 抓包指南 – 从入门到精通
- 备份从android到ios系统文件,如何将音乐从安卓设备转移到iOS设备中「建议收藏」
- ios-anchorPoint、position理解[通俗易懂]
- iOS锁屏时钟_ios时钟怎么调
- iOS 16 中的 Live Text 的更新
- AnyMP4 iOS Cleaner for mac(IOS文件清理工具)v1.0.16激活版
- iOS https(SSL/TLS)数据捕获
- 【IOS实用玩机技巧】爱思助手 IPA 签名功能常见问题汇总(iOS上架)
- 上传iOS应用变得更加容易 - 在Windows上架iOS APP的工具介绍
- 谷歌Recorder实现说话人自动标注,功能性与iOS语音备忘录再度拉大
- AnyTrans for iOS for mac(ios数据传输管理工具)
- iOS UITableView 拖动排序的实现详解手机开发
- iOS网络多线程 —实现网络加载图片详解手机开发
- iOS get请求的block方法详解手机开发
- ios入门之消息推送详解手机开发
- ios基础:iOS改变状态栏字体颜色详解手机开发
- 探索Linux系统:在iOS上下载(linux系统ios下载)
- iOS与Linux:新老技术的融合(ios与linux的关系)
- 比较iOS和Linux:谁更具优势?(ios和linux)
- 平台开发iOS开发:基于Linux平台的世界(ios基于linux)
- 把 Linux 安装到 iOS 设备上的步骤(ios安装linux)
- 开启一个崭新世界:Linux与iOS系统(linux系统ios)
- IOS系统有支持Oracle吗(ios支持oracle吗)
- iOS让Oracle无处不在(ios支持oracle么)
- iOS系统下的Oracle数据库环境(ios oracle)
- iOS 10.2.1 有偷拍漏洞!情人节防偷拍指南 | 宅客爱测试
- IOS开发之路--C语言构造类型