Получение сломанного XML с последующим полным XML из веб-сервиса - PullRequest
0 голосов
/ 14 июля 2010

В моем приложении для управления контактами я использую веб-сервис для получения больших XML-данных, которые содержат контактную информацию.я использую NSURLConnection класс для отправки запросов.Но я столкнулся с проблемой при получении XML.Сначала я получаю сломанный XML, а затем я получаю все данные XML.Может кто-нибудь выяснить, что идет не так в моем приложении.это мой кусок кода, который я использую.

NSData *postData = [postFields dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES];
NSString *postLength = [NSString stringWithFormat:@"%d",[postData length]];
NSMutableURLRequest *request = [[[NSMutableURLRequest alloc] init] autorelease];
[request setURL:[NSURL URLWithString:[[NSString alloc] initWithString:Url]]];
[request setHTTPMethod:@"POST"];
[request setValue:postLength forHTTPHeaderField:@"Content-Length"];
[request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Current-Type"];
[request setHTTPBody:postData];
conn = nil;
conn = [[NSURLConnection alloc] initWithRequest:request delegate:self];

и

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

NSString *theXml = [[NSString alloc] initWithData:myData encoding:NSASCIIStringEncoding];

UIAlertView *thealert = [[UIAlertView alloc] initWithTitle:@"the xml" message:theXml delegate:self cancelButtonTitle:@"ok" otherButtonTitles:nil];
[thealert show];
[thealert release];

NSXMLParser *xmlParser = [[NSXMLParser alloc] initWithData:data];
[xmlParser setDelegate:self];
[xmlParser parse];
    [xmlParser release];        
}

1 Ответ

3 голосов
/ 14 июля 2010

Прежде всего, вы действительно должны прочитать Используя NSURLConnection в Руководстве по программированию системы загрузки URL .

Суть в том, что connection:didReceiveData: может (и обычно) вызывается несколько раз, поэтому вы должны выполнить всю свою обработку в connectionDidFinishLoading:.

...