以下是运用原生态网络请求,ASIHTTP框架对它进行了封装,用法大同小异。
1、同步请求
- (void) initRequestData : (RequestVO *) requestParam{ NSMutableDictionary *paramDic = [[NSMutableDictionary alloc] init]; NSMutableDictionary *directory = [[NSMutableDictionary alloc]init]; NSString *paramJson; NSMutableString *urlStr = [[NSMutableString alloc] initWithString:REQUEST_URL]; [directory setValue:requestParam.className forKey:@"className"]; [directory setValue:requestParam.methodName forKey:@"methodName"]; [paramDic setValue:requestParam.specialCode forKey:@"specialCode"]; [paramDic setValue:requestParam.start forKey:@"start"]; [paramDic setValue:requestParam.end forKey:@"end"]; [directory setValue:paramDic forKey:@"parameter"]; if ([NSJSONSerialization isValidJSONObject:directory]) { NSError *error ; NSData *jsonData = [NSJSONSerialization dataWithJSONObject:directory options:NSJSONWritingPrettyPrinted error:&error]; paramJson =[[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding]; paramJson = [paramJson stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; } [urlStr appendString:paramJson]; NSURL *url = [NSURL URLWithString:urlStr]; NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init]; [request setURL:url]; [request setHTTPMethod:@"POST"]; NSHTTPURLResponse *response; NSError *error ; NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:nil]; NSDictionary *dataDictory = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&error]; NSLog(@"dataDictory : %@",[dataDictory description]); } }
2、异步请求
@interface CatalogViewController : UIViewController<NSURLConnectionDataDelegate> @property (strong,nonatomic) NSMutableData *receivedData; @end // // CatalogViewController.m // IpadLisShow // // Created by Dwen on 13-1-21. // Copyright (c) 2013年 Dwen. All rights reserved. // #import "CatalogViewController.h" #import <QuartzCore/QuartzCore.h> @interface CatalogViewController () @end @implementation CatalogViewController @synthesize receivedData; //初始化请求数据 - (void) initRequestData : (RequestVO *) requestParam{ NSMutableDictionary *paramDic = [[NSMutableDictionary alloc] init]; NSMutableDictionary *directory = [[NSMutableDictionary alloc]init]; NSString *paramJson; NSMutableString *urlStr = [[NSMutableString alloc] initWithString:REQUEST_URL]; [directory setValue:requestParam.className forKey:@"className"]; [directory setValue:requestParam.methodName forKey:@"methodName"]; [paramDic setValue:requestParam.specialCode forKey:@"specialCode"]; [paramDic setValue:requestParam.orderPa forKey:@"orderPa"]; [paramDic setValue:requestParam.sort forKey:@"sort"]; [paramDic setValue:requestParam.start forKey:@"start"]; [paramDic setValue:requestParam.end forKey:@"end"]; [directory setValue:paramDic forKey:@"parameter"]; NSLog(@"[directory description] :%@",[directory description]); if ([NSJSONSerialization isValidJSONObject:directory]) { NSError *error ; NSData *jsonData = [NSJSONSerialization dataWithJSONObject:directory options:NSJSONWritingPrettyPrinted error:&error]; paramJson =[[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding]; paramJson = [paramJson stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; } [urlStr appendString:paramJson]; NSURL *url = [NSURL URLWithString:urlStr]; NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init]; [request setURL:url]; [request setHTTPMethod:@"POST"]; NSURLConnection *connection = [[NSURLConnection alloc] initWithRequest:request delegate:self]; if (connection) { receivedData = [[NSMutableData alloc] init]; }else{ UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"提示" message:@"服务器连接异常" delegate:self cancelButtonTitle:@"确定" otherButtonTitles:nil, nil]; [alert show]; } } #pragma connection //接收响应 - (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response{ [receivedData setLength:0]; } //接收到数据 - (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data{ [receivedData appendData:data]; } //数据加载完成 - (void)connectionDidFinishLoading:(NSURLConnection *)connection{ NSError *error ; NSDictionary *dataDictory = [NSJSONSerialization JSONObjectWithData:receivedData options:kNilOptions error:&error]; // NSLog(@"dataDictory : %@",[dataDictory description]); if (NULL != dataDictory) { //拍品信息 }else{ UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"提示" message:@"该拍品无数据" delegate:self cancelButtonTitle:@"确定" otherButtonTitles:nil, nil]; [alert show]; } } - (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error{ NSLog(@"Error : %@",error); } @end
相关推荐
这个文件名可能代表一个示例代码,可能包含了如何在iOS中实现POST和GET同步/异步请求的代码实例。通常,这样的示例会涵盖创建URL请求对象、设置请求头、配置请求体(对于POST),以及使用`NSURLSession`或第三方库...
总结来说,iOS开发者在处理网络请求时,需要根据实际需求选择同步或异步请求,以及GET或POST方法。同步请求适用于数据量小且不影响用户交互的场景,而异步请求则更适用于需要保持用户界面流畅的情况。GET请求简单但...
在iOS开发中,网络请求是应用与服务器交互的重要方式,主要分为同步请求和异步请求,同时HTTP协议提供了两种常见的请求方法:GET和POST。理解这些概念及其在iOS中的实现对于构建用户友好的应用程序至关重要。 1. **...
总之,理解同步和异步请求以及GET和POST请求的区别对于iOS开发者来说至关重要。根据具体需求选择合适的请求方式,可以优化用户体验并确保数据的安全传输。在实际开发中,应当充分利用异步请求的优势,同时考虑数据...
通过对各位技术大牛博客的学习,自己试着做了一个post同步和异步的网络请求封装类,具体解析还没有写进去,不过简单的网络请求是够用了,其中肯定会有很多不合适的地方,慢慢学习慢慢完善。 1.工程中导入...
本文将深入探讨iOS系统中的同步与异步下载,以及如何使用ASIHTTPRequest库进行这两种下载方式的实现。 首先,我们来看同步下载。同步下载是指在当前线程中执行下载任务,直到下载完成才会继续执行后面的代码。这种...
在iOS应用开发中,虽然`NSURLSession`现在是主要的网络通信接口,但了解`NSURLConnection`的使用仍有其价值...无论是同步还是异步请求,`NSURLConnection`都能提供灵活的网络交互方式,尤其是在需要兼容老版本系统时。
然而,在某些场景下,我们可能需要在所有异步请求完成后执行一些同步逻辑,例如批量数据上传成功后进行统一处理。本文将探讨如何在iOS中实现这一目标,主要关注三个方面:循环异步拼组、信号量异步转同步以及...
总结来说,iOS异步加载图片涉及到多线程编程、网络请求、图片处理和UI更新等多个方面。合理运用异步加载策略和第三方库,可以优化应用性能,提高用户体验。在实际开发中,应注重代码的初始化和错误处理,避免因为这...
对于同步请求,可以使用`startSynchronous`方法,而对于异步请求,可以使用`startAsynchronous`。这个库虽然已不再更新,但在很多老项目中仍然被广泛使用,因其简单易用的API和良好的文档。 NSURL是苹果的...
如果这些请求是同步的,那么用户体验将会受到影响,因为页面需要等待所有数据加载完毕后才能显示。为了解决这个问题,通常我们会使用异步网络请求,让它们并发执行,但如何确保所有请求完成后才执行后续的UI更新或...
相对于同步请求,异步请求不会阻塞主线程,允许用户在等待响应的同时继续执行其他操作。下面展示了一个使用`NSURLConnection`进行异步请求的示例: ```objc // 1. 初始化NSMutableData对象用于存储接收到的数据 ...
- 异步请求使用 `-startAsynchronous`,在后台线程执行,主线程处理 UI。 - 同步请求使用 `-startSynchronous`,通常避免在主线程使用,以免阻塞用户界面。 3. **回调处理**: - `-setCompletionBlock:` 和 `-...
8. **请求的异步和同步**:AFNetworking支持异步请求,这在UI交互中非常重要,避免了阻塞主线程导致应用卡顿。同时,也可以根据需求选择同步请求,但要注意同步请求在非后台线程中可能导致UI冻结。 9. **网络请求的...
标题中的"swift-基于AFNetworking封装包括多图片同步异步上传下载错误上报输出请求log等功能"正是这样一个项目,它旨在为Swift开发者提供一个高效、易用的网络请求解决方案。 首先,我们要了解这个封装的主要功能:...
jquery中ajax方法有个属性async用于控制同步和异步,默认是true,即ajax请求默认是异步请求,有时项目中会用到AJAX同步。这个同步的意思是当JS代码加载到当前AJAX的时候会把页面里所有的代码停止加载,页面出现
4. 异步执行:如果操作需要进行网络请求或耗时计算,通常会实现异步执行。这可以通过在NSOperation的`main`方法中启动一个GCD异步队列或使用URLSession来完成。 5. 回调处理:异步操作完成后,可能需要在回调中更新...