Загрузить файл (используя NSURLDownload) после входа в систему (используя POST-запрос) - PullRequest
0 голосов
/ 02 ноября 2011

Я пытаюсь загрузить файл, используя NDURL Download.Для этого я должен войти на сайт.Я делаю это с помощью NSMutableURLRequest, который я отправляю с использованием sendSynchronousRequest из NSURLConnection Данные, которые я получаю от этого сообщения, действительно являются HTML-страницей, подтверждающей мой успешный вход в систему.Для загрузки файла я использую следующий код:

 NSURLRequest *theRequest = [NSURLRequest requestWithURL:[NSURL URLWithString: @"http://www.domain.com/getfile.php?file=1"]
                                            cachePolicy:NSURLRequestUseProtocolCachePolicy
                                        timeoutInterval:60.0];
// Create the connection with the request and start loading the data.
NSURLDownload  *theDownload = [[NSURLDownload alloc] initWithRequest:theRequest
                                                            delegate:self];
if (theDownload) {
    // Set the destination file.
    NSLog(@"Starting Download...");
    NSLog(@"%@", [theDownload description]);

    [theDownload setDestination:destinationFilename allowOverwrite:YES];
    pathToZipFile = destinationFilename;

} else {
    NSLog(@"Download failed...");
    return nil;
}

Но данные, которые я получаю, являются HTML-страницей, сообщающей мне, что для загрузки файла необходимо войти в систему.Есть идеи по этому поводу?У NSURLDownload есть другой сеанс, чем NSURLConnection?Заранее спасибо!

Ответы [ 2 ]

0 голосов
/ 16 апреля 2014

Я чувствую, что вам нужно реализовать делегатов для NSURLDownload, например:

- (void)downloadDidBegin:(NSURLDownload *)download{

}



- (void)download:(NSURLDownload *)download didReceiveResponse:(NSURLResponse *)response{
      _totalLength = response.expectedContentLength;
}



- (void)download:(NSURLDownload *)download willResumeWithResponse:(NSURLResponse *)response fromByte:(long long)startingByte{

}



- (void)download:(NSURLDownload *)download didReceiveDataOfLength:(NSUInteger)length{
    _recievedLength = _recievedLength + length;
}



- (void)downloadDidFinish:(NSURLDownload *)download{
    //Completed//
}



- (void)download:(NSURLDownload *)download didFailWithError:(NSError *)error{
    //Error
}
0 голосов
/ 02 ноября 2011

Окей, вы вошли в систему, а затем пытаетесь загрузить файл.Но откуда сервер знает, что вы - тот же пользователь, который входил в систему раньше?

Существуют разные способы узнать это.Некоторые файлы cookie, некоторые параметры запроса, некоторые заголовки HTTP.Но вы должны добавить что-то в запрос: «Я пользователь, который вошел в систему минуту назад».

...