废话不多说 直接看代码
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