封装网络请求

#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


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值