+ (ASIHTTPRequest *)requestWithURL:(NSString *)urlstring
params:(NSMutableDictionary *)params
httpMethod:(NSString *)httpMethod
block:(FinishLoadHandle)block {
NSString *url= [NSStringstringWithFormat:@"%@%@?",adrNAME,urlstring];
//判断是否为GET请求
NSComparisonResult comparRet1 = [httpMethod caseInsensitiveCompare:@"get"];
if (comparRet1 == NSOrderedSame) {
//------如果是GET请求,则将请求参数拼接在URL后面---------------
NSArray *allkeys = [params allKeys];
//&username=12345@qq.com&password=123456
NSMutableString *paramsString = [NSMutableStringstring];
for (int i=0; i<allkeys.count; i++) {
NSString *key = [allkeys objectAtIndex:i];
NSString *value = [params objectForKey:key];
if (i == allkeys.count-1) {
[paramsString appendFormat:@"%@=%@",key,value];
}else{
[paramsString appendFormat:@"%@=%@&",key,value];
}
}
if (paramsString.length > 0) {
url = [url stringByAppendingString:paramsString];
}
}
//NSLog(@"请求的地址>>%@",url);
__blockASIFormDataRequest *request = [ASIFormDataRequestrequestWithURL:[NSURLURLWithString:url]];
NSLog(@"%@",url);
//设置请求方式
[request setRequestMethod:httpMethod];
//设置超时时间
[request setTimeOutSeconds:30];
//判断是否为POST请求
NSComparisonResult comparRet2 = [httpMethod caseInsensitiveCompare:@"POST"];
if (comparRet2 == NSOrderedSame) {
for (NSString *key in params) {
id value = [params objectForKey:key];
//判断是否是上传文件
if ([value isKindOfClass:[NSData class]]) {
[request addData:value forKey:key];
} else {
[request addPostValue:value forKey:key];
}
}
}
//请求成功之后调用的block
//request和CompletionBlock 产生了循环引用
//request---->block
//block------>request
[request setCompletionBlock:^{
[ShareApp dissLoading];
NSString *responsestring = [[request.responseString stringByReplacingOccurrencesOfString:@""withString:@""]stringByReplacingOccurrencesOfString:@""withString:@""];
// NSLog(@"%@ %@",responsestring,request.responseString);
//NSLog(@"%@",[[request.responseString stringByReplacingOccurrencesOfString:@"" withString:@""]stringByReplacingOccurrencesOfString:@"" withString:@""]);
//[request.responseString ]
// NSError *error;
// NSArray *aaaa = [NSJSONSerialization JSONObjectWithData:[responsestring dataUsingEncoding:NSUTF8StringEncoding] options:kNilOptions error:&error];
id results;
if (!responsestring) {
UIAlertView *alertView = [[UIAlertViewalloc]initWithTitle:nilmessage:@"网络异常" delegate:nilcancelButtonTitle:@"OK"otherButtonTitles: nil];
[alertView show];
[alertView release];
return ;
}
NSData *responseData = [responsestring dataUsingEncoding:NSUTF8StringEncoding];
// UIDevice *device = [UIDevice currentDevice];
// float version = [device.systemVersion floatValue];
float version = WXHLOSVersion();
if (version >= 5.0) {
results = [NSJSONSerializationJSONObjectWithData:responseData options:NSJSONReadingMutableContainerserror:nil];
}
if ([responsestring isEqualToString:@"用户名或密码错误"]) {
results = responsestring;
}
if (!results) {
results = responsestring;
}
//回调block
if (block != nil) {
block(results);
}
}];
//请求失败之后调用的block
[request setFailedBlock:^{
[ShareApp dissLoading];
block(nil);
}];
//开始异步请求
[request startAsynchronous];
[ShareAppshowLoading];
return request;
}