封装网络请求
来源:互联网 发布:java从入门到放弃 pdf 编辑:程序博客网 时间:2024/05/01 05:24
#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_URLstringByAppendingString:urlStr];
NSURL *url = [NSURLURLWithString:urlStr];
//2.构建request
NSMutableURLRequest *request = [NSMutableURLRequestrequestWithURL:url];
[request setTimeoutInterval:60];
[requestsetHTTPMethod: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 = [[NSMutableStringalloc] initWithString:@"?"];
for (int i =0; i < params.count; i++) {
NSString *key = params.allKeys[i];
NSString *value = params[key];
[paramsStringappendFormat:@"%@=%@", key, value];
if (i < params.count -1) {
[paramsStringappendFormat:@"&"];
}
}
request.URL = [NSURLURLWithString:[urlStr stringByAppendingString:paramsString]];
}elseif ([method isEqualToString:@"POST"]) {
NSMutableString *paramsString = [[NSMutableStringalloc] initWithString:@""];
for (int i =0; i < params.count; i++) {
NSString *key = params.allKeys[i];
NSString *value = params[key];
[paramsStringappendFormat:@"%@=%@", key, value];
if (i < params.count -1) {
[paramsStringappendFormat:@"&"];
}
}
//access_token=2.00SllYeF568jxC1082c39bc40_Vqyg&username=aaa&pass=bbb
NSData *bodyData = [paramsString dataUsingEncoding:NSUTF8StringEncoding];
[requestsetHTTPBody:bodyData];
}
//构建connection对象
NSOperationQueue *queue = [[NSOperationQueuealloc] init];
[NSURLConnectionsendAsynchronousRequest:request
queue:queue
completionHandler:^(NSURLResponse *response,NSData *data, NSError *connectionError) {
if (connectionError) {
NSLog(@"Error: %@", connectionError);
return;
}
//解析Json
id result = [NSJSONSerializationJSONObjectWithData:data options:NSJSONReadingMutableContainerserror:nil];
//回到主线程调用block
dispatch_async(dispatch_get_main_queue(), ^{
//回掉block
block(result);
});
}];
}
@end
- 封装网络请求
- 封装Ger网络请求
- 网络请求封装
- 封装网络请求(AFNetworking)
- 网络请求封装
- iOS封装网络请求
- Class_封装网络请求
- 封装网络请求
- 网络请求的封装
- 网络请求封装2
- 封装的网络请求
- 封装网络请求
- 网络请求的封装
- android封装网络请求
- 网络请求封装
- 网络请求封装
- 网络请求的封装
- 网络请求封装
- java中入门代码第一个
- c语言与c++函数调用区别
- SVD奇异值分解
- 有关Dos的认识
- java,map遍历,输出键值
- 封装网络请求
- ADT中的Android Virtual Device Manager中找不到我的android设备的手机
- 黑马程序员--Java基础--程序流程控制
- 杭电OJ--2098 分拆素数和
- File的使用方法
- 何时为尽头
- 引用/对象
- 一道简单OJ题目的五种编程语言
- SVN trunk、branch、tag的用法