IOS網(wǎng)絡(luò)處理——AFNetworking與原生方法的簡(jiǎn)單使用

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

}];

}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • iOS開發(fā)系列--網(wǎng)絡(luò)開發(fā) 概覽 大部分應(yīng)用程序都或多或少會(huì)牽扯到網(wǎng)絡(luò)開發(fā),例如說(shuō)新浪微博、微信等,這些應(yīng)用本身可...
    lichengjin閱讀 4,040評(píng)論 2 7
  • 218.241.181.202 wxhl60 123456 192.168.10.253 wxhl66 wxhl6...
    CYC666閱讀 1,553評(píng)論 0 6
  • *7月8日上午 N:Block :跟一個(gè)函數(shù)塊差不多,會(huì)對(duì)里面所有的內(nèi)容的引用計(jì)數(shù)+1,想要解決就用__block...
    炙冰閱讀 2,734評(píng)論 1 14
  • 同步請(qǐng)求可以從因特網(wǎng)請(qǐng)求數(shù)據(jù), 一旦發(fā)送同步請(qǐng)求,程序?qū)⑼V褂脩艚换?直至服務(wù)器返回?cái)?shù)據(jù)完成, 才可以進(jìn)行下一步操...
    小灬博閱讀 939評(píng)論 2 4
  • *面試心聲:其實(shí)這些題本人都沒(méi)怎么背,但是在上海 兩周半 面了大約10家 收到差不多3個(gè)offer,總結(jié)起來(lái)就是把...
    Dove_iOS閱讀 27,624評(píng)論 30 472

友情鏈接更多精彩內(nèi)容