[英]Application crash after getting ASIFormDataRequest response
在我的應用程序中,我正在使用ASIFormDataRequest發送新的用戶注冊請求。 該請求包含用戶詳細信息以及使用base64Encoding轉換的圖像。 我也得到了回應。 但是應用程序在獲得響應后崩潰。 請幫助我解決此問題。 這個代碼有什么錯誤嗎?
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 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]);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.