在做项目的时候用到了连接本地服务器以及JSON编码。
首先是在本地电脑上搭建服务器,但是在MAC上,apache是自带的,唯一需要安装就是数据库,apache的启动很简单,只要在terminal里输入:sudo apachectl -k start就可以,然后输入密码就OK了,同时开启数据库。
接下来就是php编写了,我查了一些资料,主要连接方式有两种,POST 和 GET,我选了POST,虽然用GET也没关系,但是因为GET会暴露参数,所以还是用了POST,在写php时我查了一些关于JSON编码的方式,网络上有两种方式,一种是直接进行编码:
<?php
$json = '{"a":1,"b":2,"c":3,"d":4,"e":5}';
var_dump(json_decode($json));
var_dump(json_decode($json, true));
?>
还有一种就是通过数组来编码(也是我现在在用的方法):
while($row=mysql_fetch_object(($result)))//取出结果并显示
{
$u = new User();
$u->user_id=$row->user_id;
$u->username=$row->username;
$u->pic_url = $row->pic_url;
$arr[] = $u;
}
echo json_encode($arr);
通过上面两种方法,分别可以对数据进行JSON编码,到时候在程序操作过程中会方便很多。
做完了JSON编码,那么php端的基本就完成了,接下来就是本地的连接到服务器上去了。
程序连接本地服务器步骤主要为:
1.创建一个请求 :NSMutableURLRequest (需要提供URL)
2.创建需要的数据体(就是进行POST请求需要发送的参数)
3.建立异步连接
[NSURLConnection sendAsynchronousRequest:request queue:[[NSOperationQueue alloc] init] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {
// 网络请求结束之后执行!
}
在上面的代码中需要创建一个进程,而这个进程不是主进程(mainQueue) 因为如果是主进程的话,那么用户在联网的时候是不能做其他事情的,这样不合理。
而且代码返回来的是data形式的数据,data形式可以转换成string类型的,也可以转换成字典类型,因为要用到模型,所以我选择转换成字典类型的(也就是对JSON的解析):
NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil];
NSLog(@"RESPONSE DATA: %@", dic);
转换成NSDictionary很简单,因为系统自带的API里的NSJSONSerialization速度相对于其他的JSON解析方式来说快很多,而且不必导入其他的第三方框架。这样就完成了对JSON的解析。