ASI的封装 block

废话不多说 直接看代码

QYDASIBlock.h

#import <Foundation/Foundation.h>
#import "ASIFormDataRequest.h"
#import "MMProgressHUD.h"
typedef void (^RequestFinishBlock)(id result);
@interface QYDASIBlock : NSObject
{
    MMProgressHUD *_mmHud;         // 缓冲动画
}
+(ASIHTTPRequest *)requestWithUrl:(NSString *)url params:(NSMutableDictionary *)params httpMethod:(NSString *)httpMethod isShowMM:(BOOL)ismm isTURL:(BOOL)isT completeBlock:(RequestFinishBlock )block ;
@end

QYDASIBlock.m

#import "QYDASIBlock.h"
#import "Head_port.h"
#import "port.h"
#import "QYDToast.h"
@implementation QYDASIBlock
/**
 *	@brief	ASI对参数数据请求回调方法
 *
 *	@param 	url 	目标URL
 *	@param 	params 	传递数据
 *	@param 	httpMethod 	请求方式
 *	@param 	ismm 	是否有缓冲动画
 *	@param 	isT 	是否是完整URL
 *	@param 	block 	完成回调
 *
 *	@return	返回当前对象
 */
+(ASIHTTPRequest *)requestWithUrl:(NSString *)url params:(NSMutableDictionary *)params httpMethod:(NSString *)httpMethod isShowMM:(BOOL)ismm isTURL:(BOOL)isT completeBlock:(RequestFinishBlock)block

{
    if (ismm) {
        [self mmProgressHUD];
    }
        //判断数据请求方式
    if ([httpMethod caseInsensitiveCompare:@"POST"]==NSOrderedSame) {
        //拼接URL
        NSMutableString *lastUrl=nil;
        if (isT) {
          lastUrl=[NSMutableString stringWithFormat:@"%@",url];
        }else
        {
          lastUrl=[NSMutableString stringWithFormat:@"%@%@",[Head_port Headport],url];
        }
        //初始化请求对象
        __block ASIFormDataRequest *request=[ASIFormDataRequest requestWithURL:[NSURL URLWithString:lastUrl]];
        //设置请求方式
        [request setRequestMethod:httpMethod];
        //获取字典的所有key值
        NSArray *allkeys=[params allKeys];
        //添加postvalue
        for (int i=0; i<[allkeys count]; i++) {
            NSString *key=[allkeys objectAtIndex:i];
            id value=[params objectForKey:key];
            if ([value isKindOfClass:[NSData class]]) {
                [request addData:value forKey:key];
            }else
            {
                [request addPostValue:value forKey:key];
            }
        }
        //完成接受数据
        [request setCompletionBlock:^{
            NSData *data=[request responseData];
            id result=[NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil];
            if (block!=nil) {
                [MMProgressHUD dismiss];
                block(result);
            }
        }];
        //连接服务器失败
        [request setFailedBlock:^{
            if (block!=nil) {
                [MMProgressHUD dismiss];
                [QYDToast showWithText:@"网络繁忙,请稍后再试" duration:1];
                ZHLog(@"%@",request.error);
            }
        }];
        //异步请求
        [request startAsynchronous];
        return request;
    }else if([httpMethod caseInsensitiveCompare:@"GET"]==NSOrderedSame)
    {
        NSMutableString *paramString=[NSMutableString string];
        NSArray *allkeys=[params allKeys];
        for (int i=0; i<[allkeys count]; i++) {
            NSString *key=[allkeys objectAtIndex:i];
            id value=[params objectForKey:key];
            [paramString appendFormat:@"%@=%@",key,value];
        }
        NSMutableString *lastUrl=nil;
        if (isT) {
            lastUrl=[NSMutableString stringWithFormat:@"%@",url];
        }else
        {
            lastUrl=[NSMutableString stringWithFormat:@"%@%@?%@",[Head_port Headport],url,paramString];
        }
        __block ASIFormDataRequest *request=[ASIFormDataRequest requestWithURL:[NSURL URLWithString:lastUrl]];
        [request setRequestMethod:httpMethod];
        [request setCompletionBlock:^{
            NSData *data=[request responseData];
            id result=[NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil];
            if (block!=nil) {
                [MMProgressHUD dismiss];
                block(result);
            }
        }];
        [request setFailedBlock:^{
            if (block!=nil) {
                [MMProgressHUD dismiss];
                [QYDToast showWithText:@"网络繁忙,请稍后再试" duration:1];
                ZHLog(@"%@",request.error);
            }
        }];
        [request startAsynchronous];
        return request;
    }
    return nil;
}
/**
 *	@brief	缓冲视图
 */
+(void)mmProgressHUD
{
    //缓冲样式
    [MMProgressHUD setPresentationStyle:MMProgressHUDPresentationStyleFade];
    //开始动画
    [MMProgressHUD showWithTitle:nil status:@"请稍候..."];
}
@end


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值