我正在尝试将文件从服务器下载到像这样的iphone
NSURL *newURL0 = [NSURL URLWithString: url];
NSMutableURLRequest *req0 = [NSMutableURLRequest requestWithURL:newURL0];
NSURLConnection conn = [[NSURLConnection alloc] initWithRequest:req0 delegate:self];
然后
- (void)connectionDidFinishLoading:(NSURLConnection *)connection {
NSURL *docDirectory = [[[NSFileManager defaultManager] URLsForDirectory:
NSDocumentDirectory inDomains:NSUserDomainMask] lastObject];
NSURL *filePath = [docDirectory URLByAppendingPathComponent:temp];
[webData writeToURL:filePath atomically:YES];
[webData release];
connection = nil ;
if ([delegate respondsToSelector:@selector(getDataSucceeded:)]) {
NSLog(@"Log: %@", @"yes");
[delegate getDataSucceeded:self.list];
}
}
这总是很完美,但最近我注意到它不再起作用了。没有对与此功能相关的任何文件进行任何更改,它只是停止工作。当我在网络浏览器中使用相同的网址时文件下载正常,但在我的应用程序中,当我请求文件时,它只返回5个字节,单词'False',我也发现这很奇怪,因为服务器没有返回单词False,如果有问题,则返回错误消息。服务器端代码是用Visual Basic编写的。
非常感谢任何想法或建议
答案 0 :(得分:1)
False
是Visual Basic中的关键字,它不是Objective-C中的关键字。在这样的回复中,也没有理由将其作为文本出现。它几乎肯定是在服务器端生成的。
使用Charles等HTTP代理查看Web浏览器和应用程序发出的请求。它们之间会有不同,导致服务器以不同的方式响应。使用类似cURL的工具手动发出请求以确定哪些差异是原因。或者,检查服务器端代码的提交日志,以查找可能导致此问题的最新更改。
答案 1 :(得分:0)
我认为您错过了以下回调函数,您需要在单个NSData对象中附加数据块: 在我的情况下_responseText是一个NSData对象
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {
[_responseText appendData:data];
}
希望这会帮助你