iOS网络请求总结

来源:互联网 发布:淘宝积分兑换优酷会员 编辑:程序博客网 时间:2024/06/05 17:35

*说明:文章中HTTP为宏定义的http地址,事例通过app_login.action的接口,通过传递policyNum、plateNum、phoneNum三个参数进行登录操作


一、方法1: Foundation框架 NSURLConnection

(1)同步请求:同步方法加载url请求,会阻塞当前线程,一般不使用。代码如下

#pragma mark - 同步网络请求-(void)SynchronousRequest{    NSString *url = [[NSString alloc] initWithFormat:@"%@app_login.action?policyNum=111111&plateNum=222222&phoneNum=333333",HTTP];//请求的url地址        NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:url]];//根据url地址创建一个请求        NSURLResponse *response = nil;//请求答复    NSError *error = nil;//请求错误信息    NSData *content = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];//使用NSURLConnection发起一个请求,用content保存请求结果        NSString *string = [[NSString alloc]initWithData:content encoding:NSUTF8StringEncoding];//将请求结果转成String        NSLog(@"response:%@",string);//打印请求结果}

(2)异步请求:异步方法加载url请求,不会造成当前线程阻塞,通过实现代理

NSURLConnectionDelegate的方法,实现结果数据处理,另外也可以通过block的方式处理结果数据, 代理方式代码如下:


#pragma mark - 异步网络请求-(void)AsynchronousRequest{    NSString *url = [[NSString alloc] initWithFormat:@"%@app_login.action?policyNum=111111&plateNum=222222&phoneNum=333333",HTTP];    NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:url]];    aSynConnection = [[NSURLConnection alloc] initWithRequest:request delegate:self];}- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data{    [responseData appendData:data];}- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error{    NSLog(@"didFailWithError");}- (void)connectionDidFinishLoading:(NSURLConnection *)connection{    if( [connection isEqual: aSynConnection])    {        NSString *asyReturn = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding];        NSLog(@"%@",asyReturn);        responseData = nil;    }}

二.方法2:通过第三方框架:AFNetworking

(1)从GitHub下载AFNetworking:https://github.com/AFNetworking/AFNetworking

(2)将AFNetworking 文件夹拖到工程中

(3)在需要的地方#import"AFNetworking.h"

AFNetworking已经给我们封装好了异步网络请求,主要代码如下:

#pragma mark - AFNetworking 请求-(void)afNetworkingPost{    NSURL *url = [NSURL URLWithString:HTTP];    NSDictionary *parameters = @{@"policyNum":@"PDAT20155001T000037476", @"plateNum":@"渝A85***",@"phoneNum":@"1888335****"};//参数列表        AFHTTPSessionManager *manager = [[AFHTTPSessionManager alloc] initWithBaseURL:url];    manager.responseSerializer.acceptableContentTypes = [NSSet setWithObject:@"text/html"];        [manager POST:@"app_login.action" parameters:parameters success:^(NSURLSessionDataTask *task, id responseObject) {        NSLog(@"success: %@",responseObject);    } failure:^(NSURLSessionDataTask *task, NSError *error) {        NSLog(@"error: %@, \n error.localizedDescription: %@", error, [error localizedDescription]);    }];}

三.加载网络图片:通过第三方框架SDWebImage

(1)从GitHub下载SDWebImage:https://github.com/rs/SDWebImage

(2)将SDWebImage 文件夹拖到工程中

(3)在需要的地方#import "SDWebImage/UIImageView+WebCache.h"

例如从网络加载TableViewCell中的图片,只要在TableView的Delegate中使用SDWebImage的sd_setImageWithURL:(NSURL *)url方法,主要代码如下:

-(UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:identifier];[cell.image sd_setImageWithURL:imageUrl placeholderImage:[UIImage imageNamed:@"pic"]];}



0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 脚踝韧带拉伤怎么办恢复快 脚扭伤一年没好怎么办 脚扭伤半年还疼怎么办 脚崴过有后遗症怎么办 脚扭伤脚面肿了怎么办 腰突然扭了好痛怎么办 腰扭伤了怎么办最有效 腰扭伤了不能动怎么办 前交叉韧带增粗怎么办 膝盖前交叉韧带损伤怎么办 狗的腿肌肉拉伤怎么办 胳膊上的筋拉伤怎么办 肩周炎胳膊抬不起来怎么办 脖子上的筋拉伤怎么办 脚踝骨扭伤肿了怎么办 脚扭伤肿起来了怎么办 月经量特别少该怎么办 月经血沾床单上怎么办 月经弄到棉被上怎么办 血弄床单上干了怎么办 不小心吃了指甲怎么办 月经没有干净同房了怎么办 撞红了怎么办要吃药吗 自己长得太丑怎么办 长得丑特别自卑怎么办 手挤了有淤血怎么办 手指肚夹淤血了怎么办 指甲被夹了变黑怎么办 孩子手指夹肿了怎么办 指甲压了有淤血怎么办 挤到手指有淤血怎么办 指甲上有黑线是怎么办 指甲被压了要掉怎么办 脚趾肿了有脓怎么办 手指甲上的死皮怎么办 手被东西砸肿了怎么办 手被夹住有淤血怎么办 指头被车门夹了怎么办 手背夹伤了肿了怎么办 剪完指甲边肿了怎么办 手心长水泡又痒怎么办