Разбор HTML ответа - приложение для iPhone - PullRequest
1 голос
/ 08 декабря 2010

Я создаю приложение.Я отправляю информацию для входа в систему, используя метод HTTP POST, и ответ, который я получаю с сервера, находится в формате HTML.Как я могу разобрать этот HTML и добавить разные методы для преемственности или неудачи?Я пытаюсь добиться того, чтобы при неудачном входе в систему показывалось сообщение с использованием UIAlerView, а при успешном входе приложение должно было изменить представление с анимацией.:)

Код, который я сейчас использую:

- (IBAction) loginButton: (id) sender {
indicator.hidden = NO;
[indicator startAnimating];
loginbutton.enabled = NO;

// Create the username and password string.
// username and password are the username and password to login with
NSString *postString = [[NSString alloc] initWithFormat:@"username=%@&password=%@",userName, password];
// Package the string in an NSData object
NSData *requestData = [postString dataUsingEncoding:NSASCIIStringEncoding];

// Create the URL request
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL: [NSURL URLWithString:@"http://localhost/dologin.php"]];  // create the URL request
[request setHTTPMethod: @"POST"];   // you're sending POST data
[request setHTTPBody: requestData];  // apply the post data to be sent

// Call the URL
NSURLResponse *response;  // holds the response from the server
NSError *error;   // holds any errors
NSData *returnData = [NSURLConnection sendSynchronousRequest: request returningResponse:&response error:&error];  // call the URL

/* If the response from the server is a web page, dataReturned will hold the string of the HTML returned. */
NSString *dataReturned = [[NSString alloc] initWithData:returnData encoding:NSASCIIStringEncoding];

alertWithOkButton = [[UIAlertView alloc] initWithTitle:@"Status..." message:[NSString stringWithFormat:@"%@",dataReturned] delegate:self cancelButtonTitle:@"Okay" otherButtonTitles:nil];
[alertWithOkButton show];
[alertWithOkButton release];
}

Ответы [ 2 ]

0 голосов
/ 21 декабря 2010

Что я сделал, так это то, что использовал класс HTMLparser.Этот класс очень полезен, если вы получаете ответ в формате HTML.

0 голосов
/ 08 декабря 2010
-(void)startParsingForLogin:(NSString *)userIdStr Password:(NSString *)passwordStr 
{

NSString *urlString = [NSString stringWithFormat:@"http://www.example.com/loginxml.php?username=%@&password=%@",userIdStr,passwordStr];
////////NSLog(@"urlString : %@",urlString);
NSURL *xmlURL = [NSURL URLWithString:urlString];

NSMutableURLRequest *request = [[[NSMutableURLRequest alloc] initWithURL:xmlURL cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:30.0]autorelease];

NSURLResponse *returnedResponse = nil;
NSError *returnedError = nil;
NSData *itemData  = [NSURLConnection sendSynchronousRequest:request returningResponse:&returnedResponse error:&returnedError];
//NSString *itemString = [[[NSString alloc] initWithBytes:[itemData bytes] length:[itemData length] encoding:NSUTF8StringEncoding]autorelease];

//////NSLog(@"itemString : %@",itemString);


xmlParser = [[NSXMLParser alloc] initWithData:itemData];        
[xmlParser setDelegate:self];

[xmlParser parse];

}
- (void)parserDidStartDocument:(NSXMLParser *)parser
{
////////NSLog(@"parserDidStartDocument");
}

- (void)parser:(NSXMLParser *)parser parseErrorOccurred:(NSError *)parseError
{
////////NSLog(@"parseErrorOccurred");
NSString * errorString = [NSString stringWithFormat:@"Error (Error code %i )", [parseError code]];
UIAlertView * errorAlert = [[UIAlertView alloc] initWithTitle:@"Error loading data" message:errorString delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
[errorAlert show];
[errorAlert release];
}

- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qualifiedName attributes:    (NSDictionary *)attributeDict
{
////NSLog(@"didStartElement");
////NSLog(@"elementName : %@",elementName);
////NSLog(@"namespaceURI : %@",namespaceURI);
////NSLog(@"qualifiedName : %@",qualifiedName);
////NSLog(@"attributeDict : %@",attributeDict);
[registerNewArr addObject:attributeDict];

}
- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string
{
////NSLog(@"foundCharacters");
}

- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName
{
/////NSLog(@"didEndElement");   
}
- (void)parserDidEndDocument:(NSXMLParser *)parser
{
}
...