2013-11-07 2 views
2

В моем приложении мне нужно подключиться к серверу для чтения информации aml. Чтобы получить доступ к этому серверу, когда я использую обычный браузер, попросите меня вставить имя пользователя и пароль. Как я могу получить доступ к этой информации? Я пытался использовать этот код:Получение данных из удаленного XML iOS

#import "XmlCategoryReader.h" 

@interface XmlCategoryReader() { 
    NSXMLParser *categoryParser; 
} 

@end 

@implementation XmlCategoryReader 

// Inizializzazione dell'array che conterrà i dati scaricati da internet 
- (id)init { 
    self = [super self]; 
    if (self) { 
     self.categoryArray = [[NSMutableArray alloc]init]; 
    } 
    return self; 
} 

// Metodo che effettua la connessione per recuperare le informazioni dall'xml remoto 
- (void)parseXML { 
    NSString *stringUrl = [NSString stringWithFormat:@"http://54.204.6.246/magento8/api/rest/products/?category_id=3"]; 
    NSURL *url = [NSURL URLWithString:stringUrl]; 
    NSString *host = [url host]; 
    if (url == nil || host == nil) { 
     NSData *data = [[NSData alloc]initWithContentsOfURL:url]; 
     categoryParser = [[NSXMLParser alloc]initWithData:data]; 
    } else { 
     categoryParser = [[NSXMLParser alloc]initWithContentsOfURL:url]; 
    } 
    [categoryParser setDelegate:self]; 
    [categoryParser setShouldProcessNamespaces:NO]; 
    [categoryParser setShouldReportNamespacePrefixes:NO]; 
    [categoryParser setShouldResolveExternalEntities:NO]; 
    [categoryParser parse]; 
} 

- (void)parserDidStartDocument:(NSXMLParser *)parser { 
    NSLog(@"Documento trovato, inizio il parsing"); 
} 

- (void)parser:(NSXMLParser *)parser parseErrorOccurred:(NSError *)parseError { 
    NSLog(@"Errore Parsing: %@", parseError); 
} 

- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict { 

} 

- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName { 
} 

- (void)parserDidEndDocument:(NSXMLParser *)parser { 
} 

@end 

Но когда я пытаюсь запустить приложение на тренажере он возвращает мне это:

Error Domain=NSXMLParserErrorDomain Code=65 "The operation couldn’t be completed. (NSXMLParserErrorDomain error 65.)" UserInfo=0x8b5a870 {NSXMLParserErrorLineNumber=1, NSXMLParserErrorColumn=47, NSXMLParserErrorMessage=Space required after the Public Identifier 
} 

Что я делаю неправильно? Вы можете мне помочь?

ответ

0

вам нужно реализовать этот метод:

-(void)connection:(NSURLConnection *)connection didCancelAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge { 
if([challenge previousFailureCount] == 0) { 

    NSURLCredential *newCredential =[NSURLCredential credentialWithUser:@"username" password:@"password" persistence:NSURLCredentialPersistenceForSession]; 

    [[challenge sender] useCredential:newCredential forAuthenticationChallenge:challenge]; 

} 
else { 
    NSLog(@"previous authentication failure"); 
} 
} 
Смежные вопросы