ios - WebService 不完整 Objective-C

标签 ios xml-parsing webservice-client

我正在我的应用程序上解析 webService 响应 (XML),我意识到并非所有答案都被解析(我预计至少还有 3 个相同信息的 block ),所以我决定像这样修改我的方法 connectionDidFinishLoading :

-(void) connectionDidFinishLoading:(NSURLConnection *) connection {
    NSString *XMLResponse = [[NSString alloc]initWithBytes:[webData mutableBytes] length:[webData length] encoding:NSUTF8StringEncoding];

    NSLog(@"xml message: %@, data length: %i", XMLResponse, [webData length]);

    if ([XMLResponse hasPrefix:@"[ERR]"]){
        [[[UIAlertView alloc]initWithTitle:@"Notification"
                                   message:XMLResponse != nil ? [@"there was an error while trying to load service" stringByAppendingString:XMLResponse]: @"there was an error while trying to load service"
                                  delegate:self
                         cancelButtonTitle:@"OK"
                         otherButtonTitles:nil]show];
        _transacWebServCompleto = @"FALSE";
        return;
    }

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

当我运行我的应用程序时,我在输出部分得到这个

xml message: (null), data length: 5516

表格打印正确,但不完整,我的 XML 显示为空,但由于数据长度,它包含数据,任何帮助我都会感激

提前致谢

最佳答案

您的 XML 可能包含特殊字符,例如重音词,请尝试以下操作:

-(void) connectionDidFinishLoading:(NSURLConnection *) connection {
    NSString *XMLResponse = [[NSString alloc]initWithBytes:[webData mutableBytes] length:[webData length] encoding:NSISOLatin1StringEncoding];

    NSLog(@"xml message: %@, data length: %i", XMLResponse, [webData length]);

    if ([XMLResponse hasPrefix:@"[ERR]"]){
        [[[UIAlertView alloc]initWithTitle:@"Notification"
                                   message:XMLResponse != nil ? [@"there was an error while trying to load service" stringByAppendingString:XMLResponse]: @"there was an error while trying to load service"
                                  delegate:self
                         cancelButtonTitle:@"OK"
                         otherButtonTitles:nil]show];
        _transacWebServCompleto = @"FALSE";
        return;
    }

    xmlParser = [[NSXMLParser alloc] initWithData:[XMLResponse dataUsingEncoding:NSUTF8StringEncoding]];
    [xmlParser setDelegate:self];
    [xmlParser setShouldResolveExternalEntities:YES];
    [xmlParser parse];
}

我所做的就是:

  1. 获取您的 NSString (XMLResponse) 并将编码更改为 NISOLatin1StringEncoding
  2. 通过使用 NSString (XMLResponse) 创建一个 NSData 对象来初始化您的 NSXMLParser 对象(解析),但现在使用 NSUTF8StringEncoding 进行编码

尝试一下并告诉我们效果如何!

关于ios - WebService 不完整 Objective-C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18346714/

相关文章:

iOS 8 游戏中心错误

java - DOM 解析器看不到子节点

java - 在 Java 中读取和解析任意 xml 结构?

Java Web服务错误-vendor.xml无法启动

iphone - 调整 UIScrollView 的大小

ios - 有 onViewDidReload() 吗?

.net - "The ' 读取 XML 数据时超出了每个读取操作配额 (4096) 的最大字节数。长元素开始标签可能会触发此配额

PHP SoapClient复杂参数howto?

ios - Swift 2 创建单例类和初始化值

java - 从xml文件中读取数据并存储为键值对