如何处理网络或服务器错误?

时间:2012-09-21 12:45:25

标签: iphone objective-c ios xcode ipad

我正在使用以下代码

NSMutableArray *image=[[NSMutableArray alloc]init];
    for(int i=1;i<4;i++)
    {
        NSString *urlString =[NSString stringWithFormat:@"http://www.isco.com/webproductimages/appBnr/bnr%d.jpg",i];
        NSData *photoData = [NSData dataWithContentsOfURL:[NSURL URLWithString:urlString]];
       [image addObject:photoData];
    }

我的问题是,如果发生网络故障,它会显示线程...... 如何处理这个线程??

2 个答案:

答案 0 :(得分:0)

    NSMutableArray *image=[[NSMutableArray alloc]init];
        for(int i=1;i<4;i++)
        {
            NSString *urlString =[NSString stringWithFormat:@"http://www.isco.com/webproductimages/appBnr/bnr%d.jpg",i];

         NSError *error;
     NSData *data = [NSData dataWithContentsOfURL:[NSURL URLWithString:urlString] options:NSDataReadingUncached error:&error    ];

        if (data) {
      [image addObject:photoData];
         }
        else{
            if (error) {
                NSLog(error);
            }
        }


  }

答案 1 :(得分:0)

您的“线程”问题(这是一个错误/异常)可能是由多个因素引起的。可能是互联网连接断开,或服务器抛出某种形式的http错误。

首先,确保在运行网络操作时没有丢失任何互联网连接。关于如何检查互联网连接有很多建议。一种是使用SDK本身提供的Reachability类。请看这篇文章:How to check for an active Internet connection on iOS or OSX?

这篇文章还将为您提供有关互联网连接的更多见解:Testing internet connection on iPad app using ios5

当您确定它不是互联网连接,而是http服务器错误。确保您正在呼叫的http服务正确地传回数据。我使用一些REST客户端工具来检查这个(REST Client

最后,我测试了您尝试在浏览器上调用的URL,它会引发Bad Request错误。这意味着它与您的iOS代码无关。如果此服务器在您的控制之下,您应该解决该问题。