nsxml работает, но не с моим сервисом - PullRequest
0 голосов
/ 06 декабря 2011

Привет, я пишу клиент-серверное приложение для iphone, и я использую nsxml для чтения канала xml с веб-сайта ... и прежде чем написать php-сервис, я попробовал его с помощью rss с другого сайта ... и он работал нормально.

Тем не менее после того, как я написал сервис, он продолжал давать мне код ошибки 76

, поэтому я повторил ту же самую RSS-ленту, которую мне удалось получить с другого сайта ранее с моей страницы php.и это все еще отказывается читать это .., и это дает мне ту же самую ошибку 76 кода !!!!Ошибка синтаксического анализа XML: невозможно загрузить ленту новостей с веб-сайта (код ошибки 76)

 - (void)parserDidStartDocument:(NSXMLParser *)parser { 
    NSLog(@"found file and started parsing"); 
} 

- (void)parser:(NSXMLParser *)parser parseErrorOccurred:(NSError *)parseError { 
    NSString * errorString = [NSString stringWithFormat:@"Unable to download story feed from web site (Error code %i )", [parseError code]]; 
    NSLog(@"error parsing XML: %@", errorString); 
    UIAlertView * errorAlert = [[UIAlertView alloc] initWithTitle:@"Error loading content" message:errorString delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
     [errorAlert show]; 
} 
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict{ 
    //NSLog(@"found this element: %@", elementName);
    currentElement = [elementName copy]; 
    if ([elementName isEqualToString:@"item"]) { 
        // clear out our story item caches... 
        item = [[NSMutableDictionary alloc] init]; 
        currentTitle = [[NSMutableString alloc] init]; 
        currentDate = [[NSMutableString alloc] init]; 
        currentSummary = [[NSMutableString alloc] init]; 
        currentLink = [[NSMutableString alloc] init]; 
    } 
}



- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName{ 
    //NSLog(@"ended element: %@", elementName);
    if ([elementName isEqualToString:@"item"]) { 
    // save values to an item, then store that item into the array...
        [item setObject:currentTitle forKey:@"title"]; 
        [item setObject:currentLink forKey:@"link"];
        [item setObject:currentSummary forKey:@"summary"]; 
        [item setObject:currentDate forKey:@"date"]; 
        [stories addObject:[item copy]]; 
        NSLog(@"adding story: %@", currentTitle); 
    } 
}
- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string{
 //NSLog(@"found characters: %@", string); 
// save the characters for the current item... 
    if ([currentElement isEqualToString:@"title"]) { 
        [currentTitle appendString:string]; 
    } else if ([currentElement isEqualToString:@"link"]) { 
        [currentLink appendString:string]; 
    } else if ([currentElement isEqualToString:@"description"]) { 
        [currentSummary appendString:string]; 
    } else if ([currentElement isEqualToString:@"pubDate"]) { 
        [currentDate appendString:string]; 
    } 
}


- (void)parserDidEndDocument:(NSXMLParser *)parser { 
    NSLog(@"all done!"); 
    NSLog(@"stories array has %d items", [stories count]);
    // [newsTable reloadData]; 
}

1 Ответ

0 голосов
/ 06 декабря 2011

Хай, вы можете использовать следующий код, но убедитесь, что вы делаете NSXMLParserDelegate

NSURLConnection *theConnection = [[NSURLConnection alloc] initWithRequest:theRequest delegate:self];

if( theConnection )
{
//  NSLog(@"theConnection.........%@",theConnection);
    webData = [[NSMutableData data] retain];
}
else
{
    //  NSLog(@"theConnection is NULL");
}

Здесь запрос содержит URL-адрес веб-службы. затем добавьте следующий код:

-(void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response {

[webData setLength: 0];}


-(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {
[webData appendData:data];}

-(void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error {
[connection release];
[webData release];}

-(void)connectionDidFinishLoading:(NSURLConnection *)connection {
if( xmlParser )
{
    [xmlParser release];
}

xmlParser = [[NSXMLParser alloc] initWithData: webData];
[xmlParser setDelegate: self];
[xmlParser setShouldResolveExternalEntities: YES];
[xmlParser parse];

[connection release];
[webData release];
}

и тогда вы должны использовать ваш метод делегата синтаксического анализа. Я надеюсь, что это будет работать правильно

...