ios處理網(wǎng)絡(luò)請(qǐng)求,用的比較多的是第三方工具類AFNetworking,因?yàn)樵谋容^麻煩。
如登錄時(shí)發(fā)送賬號(hào)跟密碼跟后臺(tái)比對(duì),過(guò)程如下,后臺(tái)返回的是json,如
{"login":{"id":"0001","status":"OK","errorMsg":""}}
下面是使用時(shí)的舉例。
復(fù)制代碼
1 #import "AFNetWorking.h"
2
3 NSString urlLogin = @"www.xxx.com";
4 //創(chuàng)建請(qǐng)求管理器
5 AFHTTPRequestOperationManager *requestManager = [[AFHTTPRequestOperationManager alloc] init];
6 //申明請(qǐng)求的數(shù)據(jù)為text/html型
7 requestManager.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"text/html", nil];
8 requestManager.requestSerializer.HTTPShouldHandleCookies = YES;
9 [requestManager GET:urlLogin
10? ? ? ? ? parameters:nil
11? ? ? ? ? ? ? success:^(AFHTTPRequestOperation *operation, id responseObject) {
12? ? ? ? ? ? ? ? NSDictionary *dict = responseObject[@"login"];
13? ? ? ? ? ? ? ? NSString *str = [dict objectForKey:@"status"];
14? ? ? ? ? ? ? ? NSString *errorMsg = [dict objectForKey:@"errorMsg"];
15? ? ? ? ? ? ? ? //如果比對(duì)成功,就跳往下個(gè)頁(yè)面
16? ? ? ? ? ? ? ? if (str && [str isEqualToString:@"OK"]) {
17? ? ? ? ? ? ? ? ? ? MSTabBarViewController *tabBar = [[MSTabBarViewController alloc] init];
18? ? ? ? ? ? ? ? ? ? [self presentViewController:tabBar animated:YES completion:nil];
19? ? ? ? ? ? ? ? } else {
20? ? ? ? ? ? ? ? //比對(duì)不成功,彈出提示
21? ? ? ? ? ? ? ? ? ? self.alertView = [[UIAlertView alloc]initWithTitle:@"" message:errorMsg delegate:self cancelButtonTitle:@"cancle" otherButtonTitles:@"ok", nil];
22? ? ? ? ? ? ? ? ? ? [self.alertView show];
23? ? ? ? ? ? ? ? }
24
25? ? ? ? ? ? } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
26? ? ? ? ? ? ? ? NSLog(@"服務(wù)器出錯(cuò)");
27? ? ? ? ? ? }];
復(fù)制代碼
當(dāng)然前提是得引入AFNetWorking的文件。
上述都是前臺(tái)從服務(wù)器接受數(shù)據(jù),若想把數(shù)據(jù)往后臺(tái)傳,比如json??梢允褂胕os自帶的方法,也不知什么原因,用afneetworking傳不了。
json格式如下:
復(fù)制代碼
{
"list":
[
{"tel":"189XXXXXXX1", "name":""},
{"tel":"189XXXXXXX2", "name":""},
{"tel":"189XXXXXXX3", "name":""}
]
}
復(fù)制代碼
然后拼寫json時(shí)可以用
復(fù)制代碼
-(void)formatAllContacts{
NSMutableArray *arr = [[NSMutableArray alloc] init];
for (ZMOrdinaryContactsModel *ordinary in self.totalContact) {
NSMutableDictionary *dic = [[NSMutableDictionary alloc] init];
[dic setObject:ordinary.phoneNum forKey:@"tel"];
[dic setObject:ordinary.userName forKey:@"name"];
[arr addObject:dic];
}
NSDictionary *dic1 = [NSDictionary dictionaryWithObjectsAndKeys:arr,@"list", nil];
self.contactsToMeetDict = dic1;
}
復(fù)制代碼
在model中發(fā)送請(qǐng)求可以用
復(fù)制代碼
- (void)makeRequest:(ZMHomeViewController *)homeController
{
// 1.創(chuàng)建請(qǐng)求
NSURL *url = [NSURL URLWithString:@"http:xxx.com"];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
request.HTTPMethod = @"POST";
// 2.設(shè)置請(qǐng)求頭
[request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
//? NSData --> NSDictionary
// NSDictionary --> NSData
//homeController.contactsToMeetDict即為要發(fā)往后臺(tái)的字典
NSData *data = [NSJSONSerialization dataWithJSONObject:homeController.contactsToMeetDict options:NSJSONWritingPrettyPrinted error:nil];
request.HTTPBody = data;
// 4.發(fā)送請(qǐng)求
[NSURLConnection sendAsynchronousRequest:request
queue:[NSOperationQueue mainQueue]
completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {
NSLog(@"發(fā)送JSON成功");
}];
}