如何从特定网址下载文件?
Posted
技术标签:
【中文标题】如何从特定网址下载文件?【英文标题】:How to download file from particular url? 【发布时间】:2010-04-23 06:06:50 【问题描述】:NSURL * url = @"http://192.168.100.161/UploadWhiteB/wh.txt";
NSData * data = [NSData dataWithContentsOfURL:url];
if (data != nil)
NSLog(@"\nis not nil");
NSString *readdata = [[NSString alloc] initWithContentsOfURL:(NSData *)data ];
我编写此代码是为了从给定的 url 下载文件...但我在线收到错误NSData * data = [NSData dataWithContentsOfURL:url];
未捕获的异常...
所以请帮帮我。
【问题讨论】:
我不了解 Objective-C,但为什么不捕获异常,以便打印出来并了解更多问题所在? 大声笑,uncaght 表达式不是 那个 【参考方案1】:你的第一行应该是
NSURL * url = [NSURL URLWithString:@"http://192.168.100.161/UploadWhiteB/wh.txt"];
(NSURL
不是字符串,但可以很容易地从字符串构造。)
我希望您在第一行得到编译器警告——忽略编译器警告是不好的。第二行失败,因为 dataWithContentsOfURL:
期望得到一个指向 NSURL
对象的指针,而当您向它传递一个您已键入 NSURL*
的指针时,url
实际上指向一个 NSString
对象.
【讨论】:
NSData
对象的来源对于此方法是否重要? In this question 我正在尝试从 URL 将 .sqlite 数据库下载到 NSData
对象中,但它似乎没有正确保存它。该文件已写入,但是当我尝试访问它(通过我的应用程序或使用 3rd 方查看器)时,它告诉我它不是有效的 SQLite 数据库。 dataWithContentsOfURL
是否仅适用于下载 .txt 文件或类似的文件?【参考方案2】:
NSString *file = @"http://192.168.100.161/UploadWhiteB/wh.txt";
NSURL *fileURL = [NSURL URLWithString:file];
NSLog(@"qqqqq.....%@",fileURL);
NSData *fileData = [[NSData alloc] initWithContentsOfURL:fileURL];
【讨论】:
【参考方案3】:-[NSString initWithContentsOfURL:]
已弃用。你应该使用-[NSString (id)initWithContentsOfURL:encoding:error:]
。无论哪种情况,URL 参数都是NSURL
实例,而不是NSData
实例。当然,您在尝试使用错误类型初始化字符串时会出错。您可以使用-[NSString initWithData:encoding:]
使用 URL 数据初始化字符串,或者直接从 URL 初始化字符串。
【讨论】:
以上是关于如何从特定网址下载文件?的主要内容,如果未能解决你的问题,请参考以下文章
如何从服务器下载文件并将其保存在 Android SD 卡中的特定文件夹中?