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成功");

}];

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • iOS开发系列--网络开发 概览 大部分应用程序都或多或少会牵扯到网络开发,例如说新浪微博、微信等,这些应用本身可...
    lichengjin阅读 9,262评论 2 7
  • 218.241.181.202 wxhl60 123456 192.168.10.253 wxhl66 wxhl6...
    CYC666阅读 5,348评论 0 6
  • *7月8日上午 N:Block :跟一个函数块差不多,会对里面所有的内容的引用计数+1,想要解决就用__block...
    炙冰阅读 7,397评论 1 14
  • 同步请求可以从因特网请求数据, 一旦发送同步请求,程序将停止用户交互,直至服务器返回数据完成, 才可以进行下一步操...
    小灬博阅读 4,375评论 2 4
  • *面试心声:其实这些题本人都没怎么背,但是在上海 两周半 面了大约10家 收到差不多3个offer,总结起来就是把...
    Dove_iOS阅读 27,458评论 30 472

友情链接更多精彩内容