Это довольно stringWithFormat
сообщение! Первое, что нужно проверить, это то, что вы получаете URL, который соответствует вашим ожиданиям.
Как только вы получите объект запроса URL-адреса и подумаете об использовании обычного NSURLRequest
, он должен быть быстрее и не похоже, что вы собираетесь использовать этот объект повторно:
// already autoreleased
NSURLRequest *request = [NSURLRequest requestWithURL:url];
Тогда вам нужно сделать запрос. Здесь есть два подхода. Вы будете использовать NSURLDownload
, если хотите сохранить запрос в файл. Похоже, вы пытаетесь сделать GET
запрос к какому-либо почтовому серверу, поэтому вам, вероятно, нужен другой подход: NSURLConnection
.
NSURLConnection
в основном предназначен для асинхронных запросов. Вы предоставляете делегату некоторые методы, и ваша NSURLConnection будет использовать эти методы, чтобы сообщить вам, когда будет установлено соединение; были ли ошибки; и т.д.
Добавьте свойство к вашему классу контроллера представления для соединения, а также свойство NSMutableData
. Вы начнете свое соединение с (при условии, что ваш текущий класс также является вашим делегатом):
// initialize our storage for the file
self.downloadData = [NSMutableData dataWithLength:1024];
// create and start the connection
self.urlConnection = [NSURLConnection connectionWithRequest:request delegate:self];
if(nil == self.urlConnection) {
NSLog(@"Couldn't create connection to url %@", url);
}
Где-то в вашем коде - возможно, в вашем текущем контроллере представления - вам нужно реализовать эти методы:
-(void) connection:(NSURLConnection*)connection didReceiveData:(NSData*)data {
// if you have more than one NSURLConnection in this class, test against the
// connection parameter
[downloadData appendData:data];
}
-(void) connectionDidFinishLoading:(NSURLConnection*)connection {
// download completed successfully, we can do what we like with the downloadData object now
// ...
}
-(void) connection:(NSURLConnection*)connection didFailWithError:(NSError*)error {
// handle failure with the grace of Audrey Hepburn. probably log something, too
}