NSURLConnection在文件下载时收到'False'

时间:2012-05-21 19:25:41

标签: iphone objective-c ios nsurlconnection

我正在尝试将文件从服务器下载到像这样的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编写的。

非常感谢任何想法或建议

2 个答案:

答案 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];
}

希望这会帮助你