IOSネットワーク処理——AFNetworkingとオリジナルの方法の簡単な使用
9543 ワード
iosはネットワークリクエストを処理し、サードパーティのツールクラスAFNetworkingを使用することが多い.
ログイン時にアカウントを送信してパスワードとバックグラウンドを比較すると、プロセスは以下の通りで、バックグラウンドはjsonを返します.
以下に使用時の例を示します.
もちろん、AFNetWorkingのファイルを導入することが前提です.
上記はフロントがサーバからデータを受け取り、jsonなどのデータをバックグラウンドに転送したい場合です.iosが持参した方法を使ってもいいし、どういうわけかafneetworkingでは伝わらない.
jsonフォーマットは次のとおりです.
そしてjsonをスペルするときに
modelでリクエストを送信するには
ログイン時にアカウントを送信してパスワードとバックグラウンドを比較すると、プロセスは以下の通りで、バックグラウンドは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 ");
}];
}