Я пытаюсь разработать менеджер загрузок. Теперь я могу скачивать файлы практически из любого места по ссылке.
в
- (BOOL) webView: (UIWebView *) webView shouldStartLoadWithRequest: (NSURLRequest *) запрос navigationType: (UIWebViewNavigationType) navigationType
Я проверяю, является ли URL-адрес для бинарного файла, как Zip-файл. чем я настроил соединение
NSMutableURLRequest *urlRequest = [NSMutableURLRequest requestWithURL:url
cachePolicy:NSURLRequestReloadIgnoringLocalCacheData
timeoutInterval:20.0];
[urlRequest setValue:@"User-Agent" forHTTPHeaderField:@"Mozilla/5.0 (Macintosh; U; Intel Mac OS X; en) AppleWebKit/418.9 (KHTML, like Gecko) Safari/419.3"];
NSURLConnection *mainConnection = [NSURLConnection connectionWithRequest:urlRequest delegate:self];
if (nil == mainConnection) {
NSLog(@"Could not create the NSURLConnection object");
} </p>
<ul>
<li><p>(void)connection:(NSURLConnection <em>)connection didReceiveResponse:(NSURLResponse</em>)response {
self.tabBarController.selectedIndex=1;
[receivedData setLength:0];
percent = 0;
localFilename = [[[url2 absoluteString] lastPathComponent] copy];
NSLog(localFilename);<br>
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0] ;<br>
NSString *appFile = [documentsDirectory stringByAppendingPathComponent:localFilename];<br>
[[NSFileManager defaultManager] createFileAtPath:appFile contents:nil attributes:nil];
[downloadname setHidden:NO];
[downloadname setText:localFilename];
expectedBytes = [response expectedContentLength];
exp = [response expectedContentLength];
NSLog(@"content-length: %lli Bytes", expectedBytes);
file = [[NSFileHandle fileHandleForUpdatingAtPath:appFile] retain];
if (file) {</p>
<pre><code>[file seekToEndOfFile];
}
}
(void) соединение: (NSURLConnection *) соединение didReceiveData: (NSData *) data {
if (file) {
[file seekToEndOfFile];
}
[файл writeData: data];
[receiveData appendData: data];
long long resourceLength = [длина принятых данных];
float res = [длина полученных данных];
проценты = res / exp;
[Ход выполнения скрыт: НЕТ];
[прогресс setProgress: проценты];
NSLog (@ "Remaining:% lli KB", (ОжидаемыйBytes-resourceLength) / 1024);
[kbleft setHidden: NO];
[kbleft setText: [NSString stringWithFormat: @ "% lli /% lli KB", ожидаетсяBytes / 1024, (resourceLength) / 1024]];
}
в загрузке соединения окончательно закрываю файл. все работает нормально почти для каждого хостера, кроме хостеров, у которых есть процедура захвата, как filedude.com
в uiwebview я могу перейти на страницу загрузки, введите капчу и получите ссылку для скачивания. когда я нажимаю на него, файл будет создан в каталоге документов с именем файла, и загрузка начнется, но он не получит никаких данных. каждый файл имеет 0kb и NSLog (@ "content-length:% lli Bytes", ожидаетсяBytes); выдает что-то вроде 100-400 байт.
Может кто-нибудь помочь мне решить эту проблему?
С уважением