2014-08-30 2 views
0
이미지를 돌려 내 서비스를 호출 AFHTTPRequestOperationManager과 협력 한

을 작업하고 내 코드는 다음과 같이 보았다 :은 - NSURLRequest

NSString *baseURLString = @"http://get_image/"; 

@try { 
    AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager]; 
    [manager GET:baseURLString 
     parameters:nil 
     success:^(AFHTTPRequestOperation *operation, id responseObject) { 
      NSString *imageStr = responseObject[0]; 
       if([imageStr isKindOfClass:[NSNull class]]==NO) 
       { 
       NSData *imageData = [NSData dataWithBase64EncodedString:imageStr]; 
       UIImage *image = [UIImage imageWithData:imageData]; 
       self.myImage = (image==nil)? [UIImage imageNamed:@"noPhoto"]: image; 
       } 
     } 
     failure:^(AFHTTPRequestOperation *operation, NSError *error) { 
      self.myImage = [UIImage imageNamed:@"noPhoto"]; 
     }]; 
} 
@catch (NSException *exception) { 
    NSLog(@"exception %@", exception); 
} 

AFHTTPRequestOperationManager 비동기 내가이 동기화 호출 방법을 필요로하기 때문에 내 이미지를 생성하려면이 코드를 완료 할 수 있습니까?

NSString *baseURLString = @"http://get_image/"; 
NSURLResponse *response; 
NSError *error; 

NSURLRequest *urlRequest = [NSURLRequest requestWithURL:[NSURL URLWithString:p_baseURLString] cachePolicy:NSURLRequestReturnCacheDataElseLoad timeoutInterval:30]; 

// Make synchronous request 
NSData *imageRequest = [NSURLConnection sendSynchronousRequest:urlRequest returningResponse:&response error:&error]; 

??? 

UIImage *image = [UIImage imageWithData:imageData]; 
self.displayedApartment.exteriorImage = (image==nil)? [UIImage imageNamed:@"noPhoto"]: image; 

이것은 내가 시도한 것입니까? 모든 [[NSData alloc] initWithBase64EncodedData:imageRequest options:0];

  • 가있는 NSData

    NSData NSString *imageStr = [NSString stringWithUTF8String:[imageRequest bytes]]; NSData *imageData = [NSData dataWithBase64EncodedString:imageStr];

  • 다시 문자열로 변환하여 BASE64 할 imageRequest 변환
  • 그대로 imageRequest 데이터를 이용

    • 전무 = 이미지 초래
  • +0

    AFNetworking UIImage 카테고리 방법을 사용해 보셨나요? 이미지의 URL 만 전달하도록 설계되었으므로 AFNetworking은 UIImageView의 다운로드 및 업데이트를 이미지와 함께 처리합니다. –

    +0

    나는 뭔가를 놓치고 있지만 코드에서 이미지의 URL을 보유하는 변수로 p_baseURLString을 가지고 있지만이 변수가 선언 된 것을 볼 수 없습니다. baseURLString을 입력 했습니까? 반환 된 오류도 확인 했습니까 (캡처했지만 오류는 확인하지 않음). 서버가 뭔가 펑키하지 않으면 반환 된 데이터에 대해 아무 것도 할 필요가 없다고 생각합니다. – Peter

    +0

    @ try/@ catch를 사용하는 이유는 무엇입니까? – vikingosegundo

    답변

    0

    코드를 올바르게 읽는다면 변수 이름이 약간의 문제를 일으킬 수 있다고 생각합니다.

    NSData *imageRequest = [NSURLConnection sendSynchronousRequest:urlRequest returningResponse:&response error:&error]; 
    

    NSData *imageData = [NSURLConnection sendSynchronousRequest:urlRequest returningResponse:&response error:&error]; 
    

    으로 다음 UIImage *image = [UIImage imageWithData:imageData]; 당신을주는 것을 참조 : 다음 줄을 교체하십시오. 요청에 오류가 없다면 이미지 객체를 나타내지 않는 한 image이 올바르게 인스턴스화되지 않는 이유를 알 수 없습니다.

    0

    AFNetworking 함수 setImageWithURL을 사용하여 이미지를 표시하는 것만 큼, 이미지의 URL을 가져와 UIImageView를 해당 이미지로 설정해야합니다. 당신이 단지 그것을 표시 할 필요가 있다면 그것의 훨씬 더 간단한 방법.

     @property (weak, nonatomic) IBOutlet UIImageView *imageView; 
    

    그것 훨씬 더 빨리뿐만 아니라 : 당신이 뭔가를해야합니다 헤더 파일에서

    [imageView setImageWithURL:[NSURL URLWithString:p_baseURLString]]; 
    

    :

    그것은 다음과 같이 보입니다.