ASIHTTPRequest
来源:互联网 发布:架空网络地板 编辑:程序博客网 时间:2024/06/16 17:32
// 1.创建请求
NSURL *url = [NSURLURLWithString:@"http://192.168.1.103:8080/MJServer/login?username=123&pwd=123"];
ASIHTTPRequest*request = [ASIHTTPRequestrequestWithURL:url];
request.timeOutSeconds =5; // 超时
// 2.发送同步请求
[request startSynchronous];
// 3.获得错误信息
NSError*error = [requesterror];
if(error) {
NSLog(@"出错了");
} else {
//获得服务器的响应
NSData*data = [requestresponseData];
} //[request responseData]
发送异步请求// 1.创建请求
NSURL *url = [NSURLURLWithString:@"http://192.168.1.103:8080/MJServer/login?username=123&pwd=123"];
ASIHTTPRequest*request = [ASIHTTPRequestrequestWithURL:url];
request.timeOutSeconds =5; // 超时
// 2.设置代理
request.delegate =self;
// 3.发送异步请求
[request startAsynchronous];
// ASI通过代理的方式处理异步请求,请求成功、失败都会通知代理
// 代理需要遵守ASIHTTPRequestDelegate协议
ASIHTTPRequestDelegate- (void)request:(ASIHTTPRequest*)request didReceiveData:(NSData*)data
- (void)requestFailed:(ASIHTTPRequest*)request
- (void)requestFinished:(ASIHTTPRequest*)request
[request clearDelegatesAndCancel];
ASI的SEL回调@property (atomic,assign) SEL didStartSelector;
@property (atomic,assign) SEL didReceiveResponseHeadersSelector;
@property (atomic,assign) SEL willRedirectSelector;
@property (atomic,assign) SEL didFinishSelector;
@property (atomic,assign) SEL didFailSelector;
@property (atomic,assign) SEL didReceiveDataSelector;
ASI的block回调- (void)setStartedBlock:(ASIBasicBlock)aStartedBlock;
- (void)setHeadersReceivedBlock:(ASIHeadersBlock)aReceivedBlock;
- (void)setCompletionBlock:(ASIBasicBlock)aCompletionBlock;
- (void)setFailedBlock:(ASIBasicBlock)aFailedBlock;
- (void)setBytesReceivedBlock:(ASIProgressBlock)aBytesReceivedBlock;
- (void)setBytesSentBlock:(ASIProgressBlock)aBytesSentBlock;
- (void)setDownloadSizeIncrementedBlock:(ASISizeBlock) aDownloadSizeIncrementedBlock;
- (void)setUploadSizeIncrementedBlock:(ASISizeBlock) anUploadSizeIncrementedBlock;
- (void)setDataReceivedBlock:(ASIDataBlock)aReceivedBlock;
- (void)setAuthenticationNeededBlock:(ASIBasicBlock)anAuthenticationBlock;
- (void)setProxyAuthenticationNeededBlock:(ASIBasicBlock)aProxyAuthenticationBlock;
- (void)setRequestRedirectedBlock:(ASIBasicBlock)aRedirectBlock;
typedef void (^ASIBasicBlock)(void);
typedef void (^ASIHeadersBlock)(NSDictionary *responseHeaders);
typedef void (^ASISizeBlock)(long longsize);
typedef void (^ASIProgressBlock)(unsigned long longsize, unsigned long longtotal);
typedef void (^ASIDataBlock)(NSData*data);
获得服务器的响应@property (atomic,assign,readonly)int responseStatusCode;
@property (atomic,retain,readonly)NSString *responseStatusMessage;
@property (atomic,retain) NSDictionary *responseHeaders;
- (NSData *)responseData;
- (NSString *)responseString;
发送POST请求// 1.创建请求
NSURL *url = [NSURLURLWithString:@"http://192.168.1.103:8080/MJServer/login"];
ASIFormDataRequest*request = [ASIFormDataRequestrequestWithURL:url];
// 2.设置请求参数
[request addPostValue:@"123"forKey:@"username"];
[request addPostValue:@"123"forKey:@"pwd"];
//注意addPostValue和setPostValue的区别ASIFormDataRequest*request = [ASIFormDataRequestrequestWithURL:url];
// 添加普通的请求参数
[request addPostValue:@"MJ"forKey:@"username"];
// 添加文件参数
NSString*file = [[NSBundlemainBundle] pathForResource:@"musicplayer.png"ofType:nil];
[request addFile:fileforKey:@"file"];
// 或者
UIImage*image = [UIImageimageNamed:@"musicplayer"];
NSData*data = UIImagePNGRepresentation(image);
[request addData:datawithFileName:@"test.png"andContentType:@"image/png"forKey:@"file"];
文件上传 –添加文件参数- (void)addFile:(NSString *)filePath forKey:(NSString*)key
- (void)addFile:(NSString *)filePath withFileName:(NSString *)fileName andContentType:(NSString *)contentType forKey:(NSString*)key
- (void)addData:(id)datawithFileName:(NSString *)fileName andContentType:(NSString *)contentType forKey:(NSString*)key
文件下载// 设置缓存路径
NSString*caches = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory,NSUserDomainMask, YES) lastObject];
NSString *filepath =[cachesstringByAppendingPathComponent:@"test.mp4"];
request.downloadDestinationPath = filepath;
// 设置下载代理
request.downloadProgressDelegate =self.progressView;
// 设置文件的临时路径
request.temporaryFileDownloadPath = tmpFilepath;
// 设置支持断点续传
request.allowResumeForFileDownloads =YES;
监听文件上传\下载进度- (void)setUploadProgressDelegate:(id)newDelegate
- (void)setProgress:(float)newProgress;
缓存ASIDownloadCache*cache = [ASIDownloadCachesharedCache];
- (void)setDefaultCachePolicy:(ASICachePolicy)cachePolicy
- (void)setStoragePath:(NSString*)path
缓存策略-ASICachePolicy// 设置缓存策略
ASIDownloadCache*cache = [ASIDownloadCachesharedCache];
[cache setDefaultCachePolicy:ASIOnlyLoadIfNotCachedCachePolicy |ASIFallbackToCacheIfLoadFailsCachePolicy];
// 使用缓存
[request setDownloadCache:cache];
// 设置缓存的存储策略(永久存储)
[request setCacheStoragePolicy:ASICachePermanentlyCacheStoragePolicy];
ASIHTTPRequest缓存的存储策略// 设置缓存策略
ASIDownloadCache*cache = [ASIDownloadCachesharedCache];
[cache setDefaultCachePolicy:ASIOnlyLoadIfNotCachedCachePolicy |ASIFallbackToCacheIfLoadFailsCachePolicy];
// 使用缓存
[ASIHTTPRequestsetDefaultCache:cache];
缓存的其他特性[request setSecondsToCache:60 *60 * 24 * 7]; // 缓存7天
BOOL useCache =[requestdidUseCachedResponse];
ASIHTTPRequest[ASIHTTPRequestisNetworkInUse];
[ASIHTTPRequestsetShouldUpdateNetworkActivityIndicator:YES];
request.shouldContinueWhenAppEntersBackground =YES;
request.numberOfTimesToRetryOnTimeout =2; // 重试2次
- ASIHTTPRequest
- ASIHTTPRequest
- ASIHTTPRequest
- ASIHTTPRequest
- ASIHTTPRequest
- ASIHTTPRequest
- ASIHTTPRequest
- asihttprequest
- ASIHTTPRequest
- ASIHTTPRequest
- ASIHTTPRequest
- ASIHttpRequest
- ASIHTTPRequest
- ASIHttpRequest
- ASIHTTPRequest
- ASIHTTPRequest
- ASIHTTPRequest
- AsiHttpRequest
- 在Oracle数据库的表中插入图片的方法
- 运算符(一)
- 虚拟经济abc
- button的属性Image占用 用往button上添加了一个, 移除时候tag值找还蛮方便
- MAKEFILE学习笔记--简介
- ASIHTTPRequest
- 树型dp Codeforces633F The Chocolate Spree
- ActionBar 控件实现Tab页
- 卷积神经网络
- android apk 防止反编译技术第五篇-完整性校验
- iOS中KeyChain的使用
- ListView中同时开启多个倒计时
- iOS 日期字符串相互转换
- React Native for Android