2013-05-22 1 views
0

데이터를 다운로드 받기내가 그 목적을 위해 <code>NSURLConnection</code>을 사용, 전체 XML 나는 XML 문서를 다운로드하고 아이폰 애플 리케이션에 그것을 구문 분석 할 때 사용합니다 오래된 응용 프로그램이

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

    [responseData appendString:elementName]; 
    [responseData appendString:namespaceURI]; 
    [responseData appendString:qName]; 

} 
- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string{ 
    [responseData appendString:string]; 

} 
- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName{ 
    [responseData appendString:elementName]; 
    [responseData appendString:namespaceURI]; 
    [responseData appendString:qName]; 


} 
-(void) parserDidEndDocument:(NSXMLParser *)parser{ 
    [SVProgressHUD showSuccessWithStatus:@"Downloading completed"]; 

     NSLog(@"DATA : %@",responseData);//not properly appended, tags delimeters are missing 

     if (responseData != nil) { 

      [self startParsing:responseData]; 
      [responseData release]; 
     } 


} 

가 어떻게 responseData 변경 가능한 문자열의 서버에서받은 모든 데이터를 추가 할 : AFXMLRequestOperation, 나는 제대로 XML 데이터를 얻을 수있는 방법을 알아낼 수 없습니다? 다운로드가 완료된 후받은 데이터를 디버깅했으며 xml에는 태그 구분 기호 <>이 누락되었습니다. XML 데이터를 가져 오는 길을 놓친 것 같습니다.

피씨 : xml을 NSMutableString 개체로 가져 오는 것이 중요합니다.

@Fermi 당신이 권장 내가 AFURLConnectionOperation을 사용

, 그것은 내 목적으로 잘 작동하지만 내 수신 된 데이터 대신 내가 완성 데이터를 얻을 수 있으며, 위임 방법으로 사로 잡았되지 않은 것으로 나타났습니다 블록 :

NSURLConnection 대리자 메서드가 호출되지 않기 때문에 WO
NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:API_URL]]; 

AFURLConnectionOperation *operation = [[AFURLConnectionOperation alloc] initWithRequest:request]; 
operation.completionBlock = ^{ 
    NSLog(@"Complete: %@",operation.responseString);//responseString is my data 


}; 
[operation start]; 
[SVProgressHUD showWithStatus:@"Downloading files"]; 

, 나는 실패를 관리 할 수있는 방법 등? 고맙습니다.

답변

1

AFXMLRequestOperation은 원시 XML 문자열이 아닌 NSXMLDocument 인스턴스를 반환하기 위해 명시 적으로 사용됩니다.

XML 문자열에 AFURLConnectionOperation을 사용하고 NSURLConnection과 같은 방식으로 NSMutableString을 빌드하십시오.

+0

Thanx Femi, 항상 NSXMLParserDelegate 메소드를 유지해야합니까? – Malloc

+0

+1 아, 'NSURLConnection 대리자 메서드를 구현해야합니다.' 고맙습니다, 나는 그것을 시도하고 당신에게 돌아갈 것입니다 :) – Malloc

+0

안녕하세요 페르미, 나는 그들이'AFURLConnectionOperation'에 대해 작동하지만 NSURLConnection'의 프로토콜 메소드 구현을 유지합니다.하지만 그들은 전화를받지 않습니다. 제 편집 게시물을보세요. 고맙습니다. – Malloc