封装网络请求

来源:互联网 发布: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


0 0
原创粉丝点击