封装网络请求
2015-09-10 08:25
706 查看
#import "DataService.h"
#define BASE_URL @"https://api.weibo.com/2/"
@implementation DataService
+ (void)requestData:(NSString *)urlStr
htttpMethod:(NSString *)method
params:(NSMutableDictionary *)params
completionHandle:(void(^)(id result))block
{
//1.构建URL
urlStr = [BASE_URL
stringByAppendingString:urlStr];
NSURL *url = [NSURL
URLWithString:urlStr];
//2.构建request
NSMutableURLRequest *request = [NSMutableURLRequest
requestWithURL:url];
[request setTimeoutInterval:60];
[request
setHTTPMethod:method];
if ([method isEqualToString:@"GET"]) {
//拼接URL---》https://api.weibo.com/2/statuses/home_timeline.json?access_token=2.00SllYeF568jxC1082c39bc40_Vqyg&username=aaa&pass=bbb
NSMutableString *paramsString = [[NSMutableString
alloc] initWithString:@"?"];
for (int i =
0; i < params.count; i++) {
NSString *key = params.allKeys[i];
NSString *value = params[key];
[paramsString
appendFormat:@"%@=%@", key, value];
if (i < params.count -
1) {
[paramsString
appendFormat:@"&"];
}
}
request.URL = [NSURL
URLWithString:[urlStr
stringByAppendingString:paramsString]];
}else
if ([method isEqualToString:@"POST"]) {
NSMutableString *paramsString = [[NSMutableString
alloc] initWithString:@""];
for (int i =
0; i < params.count; i++) {
NSString *key = params.allKeys[i];
NSString *value = params[key];
[paramsString
appendFormat:@"%@=%@", key, value];
if (i < params.count -
1) {
[paramsString
appendFormat:@"&"];
}
}
//access_token=2.00SllYeF568jxC1082c39bc40_Vqyg&username=aaa&pass=bbb
NSData *bodyData = [paramsString
dataUsingEncoding:NSUTF8StringEncoding];
[request
setHTTPBody:bodyData];
}
//构建connection对象
NSOperationQueue *queue = [[NSOperationQueue
alloc]
init];
[NSURLConnection
sendAsynchronousRequest:request
queue:queue
completionHandler:^(NSURLResponse *response,
NSData *data, NSError *connectionError) {
if (connectionError) {
NSLog(@"Error: %@", connectionError);
return;
}
//解析Json
id result = [NSJSONSerialization
JSONObjectWithData:data options:NSJSONReadingMutableContainers
error:nil];
//回到主线程调用block
dispatch_async(dispatch_get_main_queue(), ^{
//回掉block
block(result);
});
}];
}
@end
#define BASE_URL @"https://api.weibo.com/2/"
@implementation DataService
+ (void)requestData:(NSString *)urlStr
htttpMethod:(NSString *)method
params:(NSMutableDictionary *)params
completionHandle:(void(^)(id result))block
{
//1.构建URL
urlStr = [BASE_URL
stringByAppendingString:urlStr];
NSURL *url = [NSURL
URLWithString:urlStr];
//2.构建request
NSMutableURLRequest *request = [NSMutableURLRequest
requestWithURL:url];
[request setTimeoutInterval:60];
[request
setHTTPMethod:method];
if ([method isEqualToString:@"GET"]) {
//拼接URL---》https://api.weibo.com/2/statuses/home_timeline.json?access_token=2.00SllYeF568jxC1082c39bc40_Vqyg&username=aaa&pass=bbb
NSMutableString *paramsString = [[NSMutableString
alloc] initWithString:@"?"];
for (int i =
0; i < params.count; i++) {
NSString *key = params.allKeys[i];
NSString *value = params[key];
[paramsString
appendFormat:@"%@=%@", key, value];
if (i < params.count -
1) {
[paramsString
appendFormat:@"&"];
}
}
request.URL = [NSURL
URLWithString:[urlStr
stringByAppendingString:paramsString]];
}else
if ([method isEqualToString:@"POST"]) {
NSMutableString *paramsString = [[NSMutableString
alloc] initWithString:@""];
for (int i =
0; i < params.count; i++) {
NSString *key = params.allKeys[i];
NSString *value = params[key];
[paramsString
appendFormat:@"%@=%@", key, value];
if (i < params.count -
1) {
[paramsString
appendFormat:@"&"];
}
}
//access_token=2.00SllYeF568jxC1082c39bc40_Vqyg&username=aaa&pass=bbb
NSData *bodyData = [paramsString
dataUsingEncoding:NSUTF8StringEncoding];
[request
setHTTPBody:bodyData];
}
//构建connection对象
NSOperationQueue *queue = [[NSOperationQueue
alloc]
init];
[NSURLConnection
sendAsynchronousRequest:request
queue:queue
completionHandler:^(NSURLResponse *response,
NSData *data, NSError *connectionError) {
if (connectionError) {
NSLog(@"Error: %@", connectionError);
return;
}
//解析Json
id result = [NSJSONSerialization
JSONObjectWithData:data options:NSJSONReadingMutableContainers
error:nil];
//回到主线程调用block
dispatch_async(dispatch_get_main_queue(), ^{
//回掉block
block(result);
});
}];
}
@end
相关文章推荐
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 不可修补的 iOS 漏洞可能导致 iPhone 4s 到 iPhone X 永久越狱
- iOS 12.4 系统遭黑客破解,漏洞危及数百万用户
- 每日安全资讯:NSO,一家专业入侵 iPhone 的神秘公司
- [转][源代码]Comex公布JailbreakMe 3.0源代码
- js判断客户端是iOS还是Android等移动终端的方法
- IOS开发环境windows化攻略
- .net平台推送ios消息的实现方法
- 探讨Android与iOS,我们将何去何从?
- Android网络请求库android-async-http介绍
- Android、iOS和Windows Phone中的推送技术详解
- IOS 改变键盘颜色代码
- Android和IOS的浏览器中检测是否安装某个客户端的方法
- javascript实现阻止iOS APP中的链接打开Safari浏览器
- IOS开发第三方语音-微信语音
- iOS开发之路--微博OAuth授权_取得用户授权的accessToken
- iOS开发中实现邮件和短信发送的简单示例
- ios通过按钮点击异步加载图片