Попробуйте также:
this.log = console.log.bind( console, '[' + new Date().toUTCString() + ']' );
Эта функция помещает метку времени, имя файла и номер строки в то же самое из встроенного console.log
.
Ваш HTTP-код выглядит правильно. Возможно, вы захотите зарегистрировать размер полученных данных после завершения загрузки и сравнить его с ожидаемым размером изображения на сервере. Если это ожидаемый размер, возможно, само изображение повреждено на сервере.
Я тоже это видел. Если вы сохраняете данные в файл, а затем считываете данные обратно в изображение, все работает отлично. Я подозреваю, что в данных изображения jpeg есть информация HTTP-заголовка.
Надеюсь, кто-то найдет решение этой проблемы, потому что обходной путь сохранения в файл - отстой.
// problem
UIImage *newImage = [UIImage imageWithData:receivedData];
// crappy workaround
[receivedData writeToFile:[NSString stringWithFormat:@"a.jpg"] atomically:NO];
UIImage *newImage = [UIImage imageWithContentsOfFile:@"a.jpg"];
ASI-HTTP может решить эту проблему.
NSURL *coverRequestUrl = [NSURL URLWithString:imageStringURL];
ASIHTTPRequest *coverRequest = [[ASIHTTPRequest alloc] initWithURL:coverRequestUrl];
[coverRequest setDelegate:self];
[coverRequest setDidFinishSelector:@selector(imageRecieved:)];
[appDelegate.queue addOperation:coverRequest];
[appDelegate.queue go];
Моя переменная очереди в appDelegate - это объект очереди ASINetwork. Поскольку я отправляю асинхронный запрос, поэтому использую его.
- (void)imageRecieved:(ASIHTTPRequest *)response
{
UIImage *myImage = [UIImage imageWithData:[response responseData]];
}