#iphone #nsxmlparser
#iPhone #nsxmlparser
Вопрос:
Я выполняю синтаксический анализ xml, в то время как мой URL-адрес аутентифицируется URL с именем пользователя и паролем.
Когда я помещаю этот URL-адрес в браузер, он запрашивает у меня имя пользователя и пароль для входа.
Я хочу проанализировать этот URL в iphone с помощью NSXMLParser.
Для синтаксического анализа я использую приведенный ниже код, но для меня он возвращает ошибку Parseerroroccurrent.
NSString *UploadCardDesign=kLOGIN_URL;
NSMutableURLRequest *request = [[[NSMutableURLRequest alloc]initWithURL:[NSURL URLWithString:UploadCardDesign]] autorelease];
[request setHTTPMethod: @"GET"];
[request setHTTPBody:nil];
NSData *returnData = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];
//NSString *strRequ=[[NSString alloc] initWithData:returnData encoding:nsen]
NSString *data=[[NSString alloc]initWithData:returnData encoding:NSUTF8StringEncoding];
И для синтаксического анализа:
xmlParser = [[NSXMLParser alloc] initWithData:returnData];
[xmlParser setDelegate:self];
[xmlParser parse];
Пожалуйста, помогите мне в том же или посоветуйте, что я делаю для получения хороших результатов.
Ответ №1:
Реализуйте эту функцию делегирования для аутентификации….
- (void)connection:(NSURLConnection *)connection didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge {
if ([challenge previousFailureCount] == 0)
{
NSLog(@"received authentication challenge");
NSURLCredential *newCredential;
newCredential=[NSURLCredential credentialWithUser:@"root"
password:@"rootpassword"
persistence:NSURLCredentialPersistenceForSession];
NSLog(@"credential created");
[[challenge sender] useCredential:newCredential forAuthenticationChallenge:challenge];
NSLog(@"responded to authentication challenge");
}
else
{
NSLog(@"previous authentication failure");
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Authentication Failure"
message:@"Website did not accept the username and password."
delegate:nil
cancelButtonTitle:@"OK"
otherButtonTitles:nil];
[alert show];
[alert release];
}
}
Комментарии:
1. Где вызвать эту функцию для аутентификации?