2014-10-16 1 views
2

Я пытался загрузить изображение из URL (Craigslist, чтобы быть более точным)Загрузить изображение Из Craigslist

Во-первых, я использовал рамки SDWebImage, и я не мог видеть изображения. После этого я попытался простой способ загрузить URL:

, используя этот адрес для изображения:

http://images.craigslist.org/01212_fxFfHsZFhoi_600x450.jpg

UIImageView image; 
NSString *urlstring = [NSString stringWithFormat:@"http://images.craigslist.org/01212_fxFfHsZFhoi_600x450.jpg"]; 
NSURL *url = [NSURL URLWithString:urlstring]; 
NSURLRequest *request = [NSURLRequest requestWithURL:url]; 
[image setImageWithURLRequest:request 
       placeholderImage:[UIImage imageNamed:@"placeholder.png"] 
         success:^(NSURLRequest *request, NSHTTPURLResponse *response, UIImage *image){ 
          // Succes on loading image 
         } 
         failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error){ 
          // Fail to load image 
         }]; 

, и я до сих пор не может видеть изображение, на мой взгляд изображения.

Проблема в том, что если я изменю URL и использую тот же точный код, изображение будет загружено просто отлично. Я попытался загрузить изображение в Safari, и он работает нормально, поэтому ссылка в порядке.

Например я использовал: http://monsieurstolli.files.wordpress.com/2013/10/meh.jpg

и она работает.

Я понятия не имею, как загрузить это изображение.

Edit:

я сделал немного больше расследование, и я изменил код:

AFHTTPRequestOperation *requestOperation = [[AFHTTPRequestOperation alloc] initWithRequest:urlRequest]; 
    requestOperation.responseSerializer = [AFImageResponseSerializer serializer]; 
    requestOperation.responseSerializer.acceptableContentTypes = [NSSet setWithObject:@"text/plain"]; 
    [requestOperation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) { 
     NSLog(@"Response: %@", responseObject); 
     _imga.image = responseObject; 

    } failure:^(AFHTTPRequestOperation *operation, NSError *error) { 
     NSLog(@"Image error: %@", error); 
    }]; 
    [requestOperation start]; 

    } 

, но на этот раз я получил следующее сообщение об ошибке:

2014-10-16 15:07:10.537 CraigslistChecker[3192:907] Image error: Error Domain=com.alamofire.error.serialization.response Code=-1011 "Request failed: not found (404)" UserInfo=0x1c5b8e30 {com.alamofire.serialization.response.error.response=<NSHTTPURLResponse: 0x1c59ac60>, NSErrorFailingURLKey=images.craigslist.org/00W0W_blCL2sqk1Jt_600x450.jpg, NSLocalizedDescription=Request failed: not found (404), com.alamofire.serialization.response.error.data=<0d0a>} 
purgeIdleCellConnections: found one to purge conn = 0x1c59b1f0 
+0

Обратите внимание, что кнопка «Код фрагмента» предназначена для встраивания JavaScript - не для общих образцов кода. Вместо этого используйте кнопку «Образец кода» (Ctrl-K). – Anna

ответ

0

URL, вы вывесили возвращается ошибка 404 (не найдена), когда я запрашиваю ее в веб-браузере, что означает, что сервер отказывается обслуживать URL-адрес для вас. Так как:

  • URL-адрес является фальшивкой
  • URL-адрес изображения было временным (истекающий) и ушел, прежде чем вы просили его
  • URL-адрес изображения требует, чтобы вы вошли в систему (и дает неправильный код ошибки)
  • Сервер предотвращает загрузку изображений вне контекста определенной веб-страницы, проверяя реферер.

Мое предположение было бы последним. Если это так, задание поля заголовка «Referer» (опечатывание намеренного) в NSURLRequest URL-адресу страницы, содержащей изображение, о котором идет речь, должно исправить эту проблему, но вы, вероятно, должны проверить с Craigslist, чтобы убедиться, что это не будет нарушать их условия обслуживания. В противном случае есть хорошие шансы, что они закроют строку пользовательского агента вашего приложения.