Анализ XML (формат WSDL) не анализирует данные несколько раз? - PullRequest
1 голос
/ 30 ноября 2011

Я использую веб-службы Soap и получаю ответ в XML, и этот ответ я храню в NSMutableData, а затем выполняю синтаксический анализ XML и использую NSXMLParser.Моя проблема в том, что иногда это работает, а иногда нет, я не могу определить, в чем проблема, поэтому любой может помочь мне выйти из этой проблемы.Я использую этот код -

    NSString *msgLength = [NSString stringWithFormat:@"%d", [soapMessage length]];
    [theRequest addValue: @"text/xml; charset=utf-8" forHTTPHeaderField:@"Content-Type"];
    [theRequest addValue: @"http://MYLINK......." forHTTPHeaderField:@"MY_action"];
    [theRequest addValue: msgLength forHTTPHeaderField:@"Content-Length"];
    [theRequest setHTTPMethod:@"POST"];
    [theRequest setHTTPBody: [soapMessage dataUsingEncoding:NSUTF8StringEncoding]];
    NSURLConnection *theConnection = [[NSURLConnection alloc] initWithRequest:theRequest delegate:self];
    if(theConnection)
    {
        webData_msg = [[NSMutableData data] retain];
    }

и получаю также ответ в -

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

, но после получения ответа проанализируйте xml здесь -

-(void)connectionDidFinishLoading:(NSURLConnection *)connection
{
    if( xmlParser_msg)
    {
        [xmlParser_msg release];
        xmlParser_msg=nil;
    }
    xmlParser_msg = [[NSXMLParser alloc] initWithData: webData_msg];
    [xmlParser_msg setDelegate: self];
    [xmlParser_msg setShouldResolveExternalEntities: YES];
    [xmlParser_msg parse];

    [connection release];
    [webData_msg release];
}

, чем проблемавозникают здесь, иногда NSXMLParserDelegate методы вызывают несколько раз не вызывать.Что здесь не так?Пожалуйста, помогите и извините за любую ошибку на английском языке.

Ответы [ 2 ]

1 голос
/ 11 января 2012

Проблема заключалась в том, что я получал HTML-ответ через веб-сервис, поэтому на нем висел xml purser.Иногда это были ошибки со стороны веб-сервиса с содержанием HTML.

0 голосов
/ 30 ноября 2011

Может быть, это должно быть соединение (или) неудачный анализ. Вы можете проверить это, оставив if (xmlParser parse) {blahblahblah} else {unsccesful parsing}

...