newby IOS: невозможно перенаправить URL-адрес

Это мой первый проект на iOS. Имея трудное время получить логин для работы. На сайте есть meta_refresh для другого URL. Я попытался отправить еще один запрос на URL-адрес в meta_refresh, но затем приложение просто зависло. Я уверен, что делаю что-то не так, но я использую XCode 4.4, поэтому многие методы делегата NSURLConnection устарели.

Вот что я делаю:

NSString *urlAsString = baseURL;
urlAsString = [urlAsString stringByAppendingString:@"?user[login]=username"];
urlAsString = [urlAsString stringByAppendingString:@"&user[password]=password"];
urlAsString = [urlAsString stringByAppendingString:@"&origin=splash"];

NSURL *url = [NSURL URLWithString:urlAsString];
NSMutableURLRequest *urlRequest = [NSMutableURLRequest requestWithURL:url];
[urlRequest setTimeoutInterval:30.0f];
[urlRequest setHTTPMethod:@"POST"];
NSURLResponse *response = nil;
NSError *error = nil;

NSData *data = [NSURLConnection sendSynchronousRequest:urlRequest returningResponse:&response error:&error];    

if([data length] > 0 && error == nil){
    NSString *html = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
    NSLog(@"HTML = %@", html);
    NSRange obj = [html rangeOfString:@"http-equiv=\"refresh\""];
    NSInteger len = obj.length;
} else if([data length] == 0 && error == nil) {
    NSLog(@"No data was returned.");

} else {
    NSLog(@"Error happened = %@", error);
}

Вот что я получаю:

Другой вопрос, что я читал, что я должен использовать асинхронное соединение. Проблема в том, что мне нужно, чтобы данные, собранные с сайта, отображались на экране. Если я покажу экран до того, как данные будут возвращены, то у меня не будет никаких данных - или я не понимаю, как это работает?

Спасибо. --Тони


person Tony Lezimis    schedule 12.11.2012    source источник


Ответы (1)


Я думаю, что, возможно, вы смешиваете вещи. Вы устанавливаете URL-адрес строки со значениями GET, а затем устанавливаете HTTPMethod в POST, и я не знаю, будет ли это работать нормально.

Вот код, который я должен отправлять значения с помощью POST:

NSString *post = [NSString stringWithFormat:@"&user_login=%@&user_password=%@&origin=%@,username,password, splash];

NSData *postData = [post dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES];
NSString *postLength = [NSString stringWithFormat:@"%d",[postData length]];
NSMutableURLRequest *request = [[[NSMutableURLRequest alloc] init] autorelease];
[request setURL:[NSURL URLWithString:[NSString stringWithFormat:baseURL]]];

[request setHTTPMethod:@"POST"];

[request setValue:postLength forHTTPHeaderField:@"Content-Length"];
[request setHTTPBody:postData];

NSURLConnection *conn = [[NSURLConnection alloc]initWithRequest:request delegate:self];
person estemendoza    schedule 12.11.2012