zoukankan      html  css  js  c++  java
  • IOS网络处理——AFNetworking与原生方法的简单使用

    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成功");
                                 }];
    }
  • 相关阅读:
    面试题3
    面试题2
    (原)python爬虫入门(2)---排序爬取的辽宁科技大学热点新闻
    (原)python爬虫入门(1)---爬取辽宁科技大学相关新闻
    Classic Abstract Data Types--C
    面试题1
    (原)----2叉查找树 in C
    《 Trees and Graphs》----CCI_Q4.6
    EasyUI 弹出window子页面,选中某条数据回调给父页面并关闭子页面
    跨域问题解决
  • 原文地址:https://www.cnblogs.com/Apologize/p/4308967.html
Copyright © 2011-2022 走看看