Objective c 获取ASIFormDataRequest响应后应用程序崩溃
在我的应用程序中,我使用ASIFormDataRequest发送我的新用户注册请求。该请求包含用户详细信息以及使用Base64编码转换的图像。我也得到了回应。但是在得到响应后,应用程序会崩溃。请帮我解决这个问题。这个代码有错误吗Objective c 获取ASIFormDataRequest响应后应用程序崩溃,objective-c,ios,asiformdatarequest,Objective C,Ios,Asiformdatarequest,在我的应用程序中,我使用ASIFormDataRequest发送我的新用户注册请求。该请求包含用户详细信息以及使用Base64编码转换的图像。我也得到了回应。但是在得到响应后,应用程序会崩溃。请帮我解决这个问题。这个代码有错误吗 NSString *sx=@"male"; registrationStatusBlock = response; NSDateFormatter *dateOfBirthFormatter = [[NSDateFormatter all
NSString *sx=@"male";
registrationStatusBlock = response;
NSDateFormatter *dateOfBirthFormatter = [[NSDateFormatter alloc] init];
[dateOfBirthFormatter setDateFormat:@"YYYY:MM:dd"];
[dateOfBirthFormatter setTimeZone:[NSTimeZone timeZoneWithName:@"UTC"]];
NSString *formattedDate = [dateOfBirthFormatter stringFromDate:userDetails.dateOfBirth];
NSLog(@"URL: %@", [NSString stringWithFormat:@"%@&firstName=%@&lastName=%@&password=%@&emailId=%@&portrait=%@&dob=%@&gender=%@&task=createUser",webServiceURL,userDetails.firstName, userDetails.lastName, userDetails.emailAddress, userDetails.password, userDetails.profilePicture, formattedDate, sx]);
NSLog(@"Gender %@",userDetails.gender);
int lengthOfData=0;
NSString *encodedString ;
NSData * imageData = UIImagePNGRepresentation(userDetails.profilePicture);
registrationStatusBlock = response;
self.responseData = [NSMutableData data];
if(userDetails.profilePicture !=NULL)
{
lengthOfData = imageData.length;
encodedString = [NSString base64StringFromData:(NSData *) imageData length:lengthOfData];
}
else
encodedString=@"";
NSLog(@"URL: %@", [NSString stringWithFormat:@"%@&firstName=%@&lastName=%@&password=%@&emailId=%@&portrait=%@&portrait_type=png&dob=%@&gender=%@&task=createUser",webServiceURL,userDetails.firstName, userDetails.lastName, userDetails.emailAddress, userDetails.password, encodedString, formattedDate, sx]);
NSMutableString *URLString = [[NSMutableString alloc]initWithString:webServiceURL];
[URLString appendString:[NSString stringWithFormat:@"%@&firstName=%@&lastName=%@&password=%@&emailId=%@&portrait=%@&portrait_type=png&dob=%@&gender=%@&task=createUser",webServiceURL,userDetails.firstName, userDetails.lastName, userDetails.emailAddress, userDetails.password, encodedString, formattedDate, sx]];
ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:[NSURL URLWithString:[webServiceURL stringByAddingPercentEscapesUsingEncoding:NSASCIIStringEncoding]]];
[request addPostValue:userDetails.firstName forKey:@"firstName"];
[request addPostValue:userDetails.lastName forKey:@"lastName"];
[request addPostValue:userDetails.password forKey:@"password"];
[request addPostValue:userDetails.emailAddress forKey:@"emailId"];
[request addPostValue:encodedString forKey:@"portrait"];
[request addPostValue:@"png" forKey:@"portrait_type"];
[request addPostValue:formattedDate forKey:@"dob"];
[request addPostValue:sx forKey:@"gender"];
[request addPostValue:@"createUser" forKey:@"task"];
[request setRequestMethod:@"POST"];
NSLog(@" user registration request %@",request);
[request setDelegate:self];
[request startAsynchronous];
[NSThread sleepForTimeInterval:5];
NSLog(@"response %@",[request responseString]);
registrationStatusBlock =[[request responseString]JSONValue];
那是什么?您启动一个异步请求,然后睡眠,然后醒来,就好像收到了响应一样?
异步不是这样工作的
那是什么?您启动一个异步请求,然后睡眠,然后醒来,就好像收到了响应一样?
异步不是这样工作的 使用委托获取响应字符串
[request setDelegate:self];
[request setDidFinishSelector:@selector(requestFinished:)];
[request setDidFailSelector:@selector(requestFailed:)];
[request startAsynchronous];
然后捕获来自代理的响应:
- (void)requestFinished:(ASIHTTPRequest *)theRequest {
NSLog(@"response %@",[theRequest responseString]);
}
- (void)requestFailed:(ASIHTTPRequest *)theRequest {
NSLog(@"response Failed%@, Error:%@",[theRequest responseString],[theRequest error]);
}
使用委托获取响应字符串
[request setDelegate:self];
[request setDidFinishSelector:@selector(requestFinished:)];
[request setDidFailSelector:@selector(requestFailed:)];
[request startAsynchronous];
然后捕获来自代理的响应:
- (void)requestFinished:(ASIHTTPRequest *)theRequest {
NSLog(@"response %@",[theRequest responseString]);
}
- (void)requestFailed:(ASIHTTPRequest *)theRequest {
NSLog(@"response Failed%@, Error:%@",[theRequest responseString],[theRequest error]);
}
事故日志?崩溃日志和调用堆栈说了什么?你知道异常到底是在哪里抛出的吗?这是一条完全未经请求的建议——但你应该认识到ASIHTTPRequest是,开发人员建议其他开发人员寻找替代方案。如果这是一个新的项目,并且您正在寻找异步网络代码,那么AFNetworking就是这些选项之一。还有其他的。崩溃日志?崩溃日志和调用堆栈说了什么?你知道异常到底是在哪里抛出的吗?这是一条完全未经请求的建议——但你应该认识到ASIHTTPRequest是,开发人员建议其他开发人员寻找替代方案。如果这是一个新的项目,并且您正在寻找异步网络代码,那么AFNetworking就是这些选项之一。还有其他的。