ios同步与异步网络请求

转载 2015年07月10日 09:58:03
  1. 1、同步请求

    Object-c代码  收藏代码
    1. - (void) initRequestData : (RequestVO *) requestParam{  
    2.     NSMutableDictionary *paramDic = [[NSMutableDictionary alloc] init];  
    3.     NSMutableDictionary *directory = [[NSMutableDictionary alloc]init];  
    4.     NSString *paramJson;  
    5.     NSMutableString *urlStr = [[NSMutableString alloc] initWithString:REQUEST_URL];  
    6.     [directory setValue:requestParam.className forKey:@"className"];  
    7.     [directory setValue:requestParam.methodName forKey:@"methodName"];  
    8.     [paramDic setValue:requestParam.specialCode forKey:@"specialCode"];  
    9.     [paramDic setValue:requestParam.start forKey:@"start"];  
    10.     [paramDic setValue:requestParam.end forKey:@"end"];  
    11.     [directory setValue:paramDic forKey:@"parameter"];  
    12.     if ([NSJSONSerialization isValidJSONObject:directory]) {  
    13.         NSError *error ;  
    14.         NSData *jsonData = [NSJSONSerialization dataWithJSONObject:directory options:NSJSONWritingPrettyPrinted error:&error];  
    15.         paramJson =[[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];  
    16.         paramJson = [paramJson stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];  
    17.     }  
    18.     [urlStr appendString:paramJson];  
    19.     NSURL *url = [NSURL URLWithString:urlStr];  
    20.     NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];  
    21.     [request setURL:url];  
    22.     [request setHTTPMethod:@"POST"];  
    23.     NSHTTPURLResponse *response;  
    24.     NSError *error ;  
    25.     NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:nil];  
    26.       
    27.     NSDictionary *dataDictory = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&error];  
    28.     NSLog(@"dataDictory : %@",[dataDictory description]);  
    29.     }  
    30. }  

     2、异步请求

    Object-c代码  收藏代码
    1. @interface CatalogViewController : UIViewController<NSURLConnectionDataDelegate>  
    2.   
    3. @property (strong,nonatomic) NSMutableData *receivedData;  
    4. @end  
    5.   
    6.   
    7. //  
    8. //  CatalogViewController.m  
    9. //  IpadLisShow  
    10. //  
    11. //  Created by Dwen on 13-1-21.  
    12. //  Copyright (c) 2013年 Dwen. All rights reserved.  
    13. //  
    14.   
    15. #import "CatalogViewController.h"  
    16. #import <QuartzCore/QuartzCore.h>  
    17. @interface CatalogViewController ()  
    18.   
    19. @end  
    20.   
    21. @implementation CatalogViewController  
    22. @synthesize receivedData;  
    23.   
    24. //初始化请求数据  
    25. - (void) initRequestData : (RequestVO *) requestParam{  
    26.     NSMutableDictionary *paramDic = [[NSMutableDictionary alloc] init];  
    27.     NSMutableDictionary *directory = [[NSMutableDictionary alloc]init];  
    28.     NSString *paramJson;  
    29.     NSMutableString *urlStr = [[NSMutableString alloc] initWithString:REQUEST_URL];  
    30.     [directory setValue:requestParam.className forKey:@"className"];  
    31.     [directory setValue:requestParam.methodName forKey:@"methodName"];  
    32.     [paramDic setValue:requestParam.specialCode forKey:@"specialCode"];  
    33.     [paramDic setValue:requestParam.orderPa forKey:@"orderPa"];  
    34.     [paramDic setValue:requestParam.sort forKey:@"sort"];  
    35.     [paramDic setValue:requestParam.start forKey:@"start"];  
    36.     [paramDic setValue:requestParam.end forKey:@"end"];  
    37.     [directory setValue:paramDic forKey:@"parameter"];  
    38.     NSLog(@"[directory description] :%@",[directory description]);  
    39.     if ([NSJSONSerialization isValidJSONObject:directory]) {  
    40.         NSError *error ;  
    41.         NSData *jsonData = [NSJSONSerialization dataWithJSONObject:directory options:NSJSONWritingPrettyPrinted error:&error];  
    42.         paramJson =[[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];  
    43.         paramJson = [paramJson stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];  
    44.     }  
    45.     [urlStr appendString:paramJson];  
    46.     NSURL *url = [NSURL URLWithString:urlStr];  
    47.     NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];  
    48.     [request setURL:url];  
    49.     [request setHTTPMethod:@"POST"];  
    50.     NSURLConnection *connection = [[NSURLConnection alloc] initWithRequest:request delegate:self];  
    51.     if (connection) {  
    52.         receivedData = [[NSMutableData alloc] init];  
    53.     }else{  
    54.         UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"提示" message:@"服务器连接异常" delegate:self cancelButtonTitle:@"确定" otherButtonTitles:nil, nil];  
    55.         [alert show];  
    56.     }  
    57. }  
    58.   
    59. #pragma connection  
    60. //接收响应  
    61. - (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response{  
    62.     [receivedData setLength:0];  
    63. }  
    64.   
    65. //接收到数据  
    66. - (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data{  
    67.     [receivedData appendData:data];  
    68. }  
    69.   
    70. //数据加载完成  
    71. - (void)connectionDidFinishLoading:(NSURLConnection *)connection{  
    72.     NSError *error ;  
    73.     NSDictionary *dataDictory = [NSJSONSerialization JSONObjectWithData:receivedData options:kNilOptions error:&error];  
    74.     //    NSLog(@"dataDictory : %@",[dataDictory description]);  
    75.     if (NULL != dataDictory) {  
    76.         //拍品信息  
    77.           
    78.     }else{  
    79.         UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"提示" message:@"该拍品无数据" delegate:self cancelButtonTitle:@"确定" otherButtonTitles:nil, nil];  
    80.         [alert show];  
    81.     }  
    82. }  
    83.   
    84. - (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error{  
    85.     NSLog(@"Error : %@",error);  
    86. }  
    87.   
    88. @end  

iOS开发中的并发、串行队列,同步、异步任务

在多线程开发中我们经常会遇到这些概念:并发队列、串行队列、同步任务、异步任务。我们将这四个概念进行组合会有四种结果:串行队列+同步任务、串行队列+异步任务、并发队列+同步任务、并发队列+异步任务。我们...
  • u010105969
  • u010105969
  • 2017年04月09日 20:28
  • 1278

iOS post异步请求图片上传的实现

1 网络请求中常用的有GET请求,POST请求,还有Head Put Delegate Options Trace Connect等 GET: 获取指定资源 POST:向指定资源提交数据进行处理请...
  • QianEr9312
  • QianEr9312
  • 2015年11月30日 15:33
  • 1423

iOS 同步 异步 并发 并行 多线程的讲解与区别

1. 并发:在操作系统中,是指一个时间段中有几个程序都处于已启动运行到运行完毕之间,且这几个程序都是在同一个处理机上运行。其中两种并发关系分别是同步和互斥 2. 互斥:进程间相互排斥的使用临界资源的现...
  • baidu_31683691
  • baidu_31683691
  • 2016年01月06日 17:27
  • 3975

iOS多线程编程(同步异步和同异步锁)

1:原子操作 - OSAtomic系列函数 iOS平台下的原子操作函数都以OSAtomic开头,使用时需要包含头文件。不同线程如果通过原子操作函数对同一变量进行操作,可以保证一个线程的操作不会影响到...
  • hnjyzqq
  • hnjyzqq
  • 2015年01月31日 01:06
  • 1499

iOS网络请求总结、GET、POST、同步、异步代码块、异步代理、第三方AFNetWorking2.0使用

iOS网络请求总结、GET、POST、同步、异步代码块、异步代理、第三方AFNetWorking2.0使用 首先需要明白, GET跟POST 区别: GET请求,将参数直接写在访问路径上。操作简单,不...
  • ljh910329
  • ljh910329
  • 2015年04月03日 17:19
  • 784

GCD-两个网络请求同步问题

在网络请求的时候有时有这种需求 两个接口请求数据,然后我们才能做最后的数据处理。但是因为网络请求是移步的 。我们并不知道什么时候两个请求完成 。 通常面对这样的需求会自然的想到 多线程 啊 。表...
  • intheair100
  • intheair100
  • 2016年05月24日 17:50
  • 3264

iOS网络请求GET&POST,同步&异步

//网络编程 //在iOS下面,网络编程主要分为3步 //1.客户端发送请求 //2.建立连接,获取数据 //3.使用数据(根据用户的请...
  • Youngsher
  • Youngsher
  • 2016年03月15日 14:09
  • 216

iOS 依次执行 异步网络请求的一种实现

1.首先先介绍一个概念dispatch_semaphore dispatch_semaphore信号量为基于计数器的一种多线程同步机制。用于解决在多个线程访问共有资源时候,会因为多线程的特性而引发数据...
  • Keep_Dream
  • Keep_Dream
  • 2017年02月24日 15:51
  • 1708

Android异步和同步的区别

1、异步的好处,就是把一些东西,特别是耗时间的东西扔到后台去运行了,doInBackground,程序可以继续做自己的事情,防止程序卡在那里失去响应。 2、同步执行的话,就是程序会呆板地从头执行到尾,...
  • Jenturn
  • Jenturn
  • 2016年07月25日 16:18
  • 3971

Swift - 同步请求和异步请求

(自iOS9.0起,NSURLConnection.sendSynchronousRequest被废除不用了。建议改用NSURLSession的dataTaskWithRequest方法。具体用法可以...
  • u014063717
  • u014063717
  • 2016年03月16日 09:57
  • 3710
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ios同步与异步网络请求
举报原因:
原因补充:

(最多只允许输入30个字)