Это еще один простой вопрос who'se ответ ускользает от меня после того, как час на Google ...NSURLConnection возвращает данные, но я не могу читать его
пользователь печатает что-то в текстовое поле и на этом поле теряет фокус, я запускаю NSURLConnection ....
NSString *usernameTry = [sender text];
NSLog(@"username field = %@",usernameTry);
NSString *content = [@"http://www.siebenware.de/Rhythm/user/checkusername.php?username=" stringByAppendingString:usernameTry];
content = [content stringByAddingPercentEscapesUsingEncoding:NSASCIIStringEncoding];
NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:content] cachePolicy:NSURLRequestReloadIgnoringLocalCacheData timeoutInterval:5.0];
NSURLConnection *connection = [[NSURLConnection alloc] initWithRequest:request delegate:self];
[connection start];
NSLog(@"%@",content);
Тогда я жду ответа ....
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response {
NSLog(@"Received Response");
if ([response isKindOfClass:[NSHTTPURLResponse class]]) {
NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *) response;
int status = [httpResponse statusCode];
if (!((status >= 200) && (status < 300))) {
NSLog(@"Connection failed with status %@", status);
[UIApplication sharedApplication].networkActivityIndicatorVisible = NO;
}
}
}
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {
[resultsData appendData:data];
NSString *resultsString = [[NSString alloc] initWithData:resultsData encoding:NSUTF8StringEncoding];
NSLog(@"received data %@ %i",resultsString,[resultsString length]);
if ([resultsString isEqualToString: @"FAIL"]){
NSLog(@"failed to retrieve data");
}else{
resultsObjects = [[resultsString componentsSeparatedByString:@":"] mutableCopy];
if([resultsObjects objectAtIndex:0][email protected]"usernamecheck"){
if ([resultsObjects objectAtIndex:1]==username.text) {
if ([resultsObjects objectAtIndex:2][email protected]"NG"){
//set the check marker to bad
[usernameVer setImage:[UIImage imageNamed:@"redcross.png"]];
}else{
//set the check market to good
[usernameVer setImage:[UIImage imageNamed:@"greentick.png"]];
}
}
}
}
}
- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error {
NSLog([NSString stringWithFormat:@"Connection failed: %@", [error description]]);
UIAlertView *errorAlert = [[UIAlertView alloc] initWithTitle:@"Unable to retrieve data" message:[NSString stringWithFormat:@"Error code %i",[error code]] delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
}
Я вижу ответ прибыть в didReceiveResponse и я получаю 18 байт данных (которые я s правильно).
Однако didReceiveData говорит, что «данные» являются нулевыми. Я знаю, что я пропустил что-то исключительно простое, и я обещаю ударить себя, как только это будет выяснено.
С уважением Chris H
где именно вы видите 18 байт данных? – giorashc
Извините, удалил код. В didReceiveResponse я ранее смотрел, сколько я получил, но как только он работал, я удалил эту строку кода. –
, когда вы говорите, что данные = null, вы имеете в виду аргумент данных или ваш член resultsData? – giorashc