iOS NSURLRequest 实现基本的HTTP请求
2016年5月17日iOS Standard
平时在项目中都是直接使用第三方库进行网络编程,如ASIHttpRequest、AFNetworking等,但是iOS内置的NSURLRequst及其相关组件的使用也是必须掌握的。这里介绍的是如何使用最少的代码完成最基本的HTTP GET/POST请求。
1、HTTP GET请求
1 2 3 4 5 6 7 | NSString *testUrl = @"http://www.baidu.com/"; NSURLRequest *req = [NSURLRequest requestWithURL:[NSURL URLWithString:testUrl]]; //异步请求 [NSURLConnection sendAsynchronousRequest:req queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse * _Nullable response, NSData * _Nullable data, NSError * _Nullable connectionError) { NSString *text = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; NSLog(@"%@",text); }]; |
2、HTTP POST请求
1 2 3 4 5 6 7 8 9 10 11 12 13 | NSString *testUrl = @"http://www.baidu.com/";//当然实际上你需要一个支持POST的地址 NSMutableURLRequest *req = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:testUrl]]; //比Get请求多一步,设定HTTPMethod、Content-Type和Data req.HTTPMethod = @"POST"; [req addValue:@"application/json" forHTTPHeaderField:@"Content-Type"];//这里就可以换成XML、FORM、TEXT等等,视需求而定 NSMutableData *data = [NSMutableData data]; [data appendData:[[NSString stringWithFormat:@"{\"DATA\": \"TEST\"}"] dataUsingEncoding:NSUTF8StringEncoding]];//这里以JSON格式数据进行测试 req.HTTPBody = data; //异步请求 [NSURLConnection sendAsynchronousRequest:req queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse * _Nullable response, NSData * _Nullable data, NSError * _Nullable connectionError) { NSString *json = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; NSLog(@"%@",json); }]; |
这样就完成了最基本的网络请求功能,当然在实际项目中你还需要判断网络状况、进行异常处理、返回结果回调等等,但最重要的还是对HTTP、TCP等协议的学习和理解。
发表评论或回复