您的位置:首页 > 理论基础 > 计算机网络

封装网络请求

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  iOS 网络请求