網絡請求----請求微博信息:需要導入AFNetworking文件和UIKit+AFNetworking文件
#import <Foundation/Foundation.h>
typedefvoid(^FinishDidBlock)(AFHTTPRequestOperation *operation,id result);
typedefvoid(^FailureBlock)(AFHTTPRequestOperation *operation,NSError *error);
@interface DataService : NSObject
+ (AFHTTPRequestOperation *)requestWithURL:(NSString *)url
params:(NSMutableDictionary *)paramsDic
httpmethod:(NSString *)httpMethod
finishDidBlock:(FinishDidBlock)finishDidBlock
failureBlock:(FailureBlock)failureBlock;
@end
#import "DataService.h"
//#import "AFNetworking.h"
#define BASE_URL @"https://open.weibo.cn/2/"
@implementationDataService
+ (AFHTTPRequestOperation *)requestWithURL:(NSString *)url
params:(NSMutableDictionary *)paramsDic
httpmethod:(NSString *)httpMethod
finishDidBlock:(FinishDidBlock)finishDidBlock
failureBlock:(FailureBlock)failureBlock
{
if (paramsDic == nil) {
paramsDic =[NSMutableDictionarydictionary];
}
//拼接URL
NSMutableString *urlStr = [NSMutableStringstringWithFormat:@"%@%@",BASE_URL,url];
//參數處理
NSUserDefaults *defaults = [NSUserDefaultsstandardUserDefaults];
NSDictionary *sinaWeiboInfo = [defaults objectForKey:@"SinaWeiboAuthData"];
NSString *accessTokenKey =[sinaWeiboInfo objectForKey:@"AccessTokenKey"];
if (accessTokenKey.length == 0) {
returnnil;
}
[paramsDic setObject:accessTokenKey forKey:@"access_token"];
//創建請求管理對象
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManagermanager];
//設置請求數據的解析方式
manager.requestSerializer = [AFHTTPRequestSerializerserializer];
AFHTTPRequestOperation *operation = nil;
if ([httpMethod isEqualToString:@"GET"]) {
operation = [manager GET:urlStr parameters:paramsDic success:^(AFHTTPRequestOperation *operation, id responseObject) {
//請求成功
NSLog(@"AF-GET請求成功");
//安全判斷
if (finishDidBlock) {
finishDidBlock(operation,responseObject);
}
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
//請求失敗
NSLog(@"AF-GET請求失敗");
//安全判斷
if (failureBlock) {
failureBlock(operation,error);
}
}];
}
elseif ([httpMethod isEqualToString:@"POST"]){
//POST請求
BOOL isFile = NO;
for (NSString *key in paramsDic) {
id value = [paramsDic objectForKey:key];
if ([value isKindOfClass:[NSDataclass]]) {
//有文件類型的參數
isFile = YES;
break;
}
}
if (!isFile) {
//沒有文件
operation = [manager POST:urlStr parameters:paramsDic success:^(AFHTTPRequestOperation *operation, id responseObject) {
//請求成功
NSLog(@"AF-POST(非文件)請求成功");
//安全判斷
if (finishDidBlock) {
finishDidBlock(operation,responseObject);
}
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
//請求失敗
NSLog(@"AF-POST(非文件)請求失敗");
//安全判斷
if (failureBlock) {
failureBlock(operation,error);
}
}];
} else {
//有文件
operation = [manager POST:urlStr parameters:paramsDic constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
for (NSString *key in paramsDic) {
id value = [paramsDic objectForKey:key];
if ([value isKindOfClass:[NSDataclass]]) {
//往formData表單中添加data數據
[formData appendPartWithFileData:value
name:key fileName:key mimeType:@"p_w_picpath/jpeg"];
}
}
} success:^(AFHTTPRequestOperation *operation, id responseObject) {
//請求成功
NSLog(@"AF-POST(帶文件)請求成功");
//安全判斷
if (finishDidBlock) {
finishDidBlock(operation,responseObject);
}
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
//請求失敗
NSLog(@"AF-POST(帶文件)請求失敗");
//安全判斷
if (failureBlock) {
failureBlock(operation,error);
}
}];
}
}
//設置返回數據的解析方式
operation.responseSerializer = [AFJSONResponseSerializerserializerWithReadingOptions:NSJSONReadingMutableContainers];
return operation;
}
@end
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。