ios处理网络请求,用的比较多的是第三方工具类AFNetworking,因为原生的比较麻烦。

如登录时发送账号跟密码跟后台比对,过程如下,后台返回的是json,如

{"login":{"id":"0001","status":"OK","errorMsg":""}}

下面是使用时的举例。

 1 #import "AFNetWorking.h"
 2 
 3 NSString urlLogin = @"www.xxx.com";
 4 //创建请求管理器
 5 AFHTTPRequestOperationManager *requestManager = [[AFHTTPRequestOperationManager alloc] init];
 6 //申明请求的数据为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                 //如果比对成功,就跳往下个页面
16                 if (str && [str isEqualToString:@"OK"]) {
17                     MSTabBarViewController *tabBar = [[MSTabBarViewController alloc] init];
18                     [self presentViewController:tabBar animated:YES completion:nil];
19                 } else {
20                 //比对不成功,弹出提示
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(@"服务器出错");
27             }];

当然前提是得引入AFNetWorking的文件。

 

上述都是前台从服务器接受数据,若想把数据往后台传,比如json。可以使用ios自带的方法,也不知什么原因,用afneetworking传不了。

json格式如下:

{
    "list":
    [
        {"tel":"189XXXXXXX1", "name":""},
        {"tel":"189XXXXXXX2", "name":""},
        {"tel":"189XXXXXXX3", "name":""}
    ]
}

然后拼写json时可以用

-(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;
}

在model中发送请求可以用

- (void)makeRequest:(ZMHomeViewController *)homeController
{
    // 1.创建请求
     NSURL *url = [NSURL URLWithString:@"http:xxx.com"];
     NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
     request.HTTPMethod = @"POST";

     // 2.设置请求头
     [request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];

    //  NSData --> NSDictionary
     // NSDictionary --> NSData
     //homeController.contactsToMeetDict即为要发往后台的字典
     NSData *data = [NSJSONSerialization dataWithJSONObject:homeController.contactsToMeetDict options:NSJSONWritingPrettyPrinted error:nil];
     request.HTTPBody = data;

     // 4.发送请求
     [NSURLConnection sendAsynchronousRequest:request
                                        queue:[NSOperationQueue mainQueue]
                            completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {
                                 NSLog(@"发送JSON成功");
                             }];
}

 

posted on 2015-03-02 15:52  lixin327  阅读(622)  评论(0编辑  收藏  举报