2014-01-17 123 views
1

我试图使用AFNetworking 2.0和NSURLSession从安全服务器下载图像。不过,我得到,如果我尝试下载这样不能被转换成图像的字节流:AFNetworking 2.0,使用NSURLSession下载图像

- (SLRequestExecutionBlock) _getExecutionBlockSession 
{ 
    __block SLBaseRequest *blockSelf = self; 
    SLRequestExecutionBlock executionBlock = ^{ 

     AFHTTPSessionManager *imageDownloadManager = [AFHTTPSessionManager manager]; 
     [imageDownloadManager setResponseSerializer:[AFImageResponseSerializer serializer]]; 
     [imageDownloadManager setRequestSerializer:[AFJSONRequestSerializer serializer]]; 

     [imageDownloadManager.requestSerializer setValue:@"Accept" forHTTPHeaderField:@"application/json"]; 
     if ([SLLoginManager sharedManager].accessToken) { 
      [imageDownloadManager.requestSerializer setValue:[SLLoginManager sharedManager].accessToken forHTTPHeaderField:@"access_token"]; 
     } 

     imageDownloadManager.securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeCertificate]; 
     imageDownloadManager.securityPolicy.allowInvalidCertificates = YES; 

     NSDictionary *params = nil; 

     [[SLHttpNetworkManager sharedManager] GET:_imageURL 
             parameters:params 
              success:blockSelf.standardSuccessBlock 
              failure:blockSelf.standardErrorBlock]; 
    }; 

    return executionBlock; 
} 

只是值得一提的是,它完美的作品,如果我尝试使用这样的:

- (SLRequestExecutionBlock) _getExecutionBlock 
{ 
    __block SLBaseRequest *blockSelf = self; 
    SLRequestExecutionBlock executionBlock = ^{ 

     AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager]; 
     manager.securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeCertificate]; 
     manager.securityPolicy.allowInvalidCertificates = YES; 

     manager.responseSerializer = [AFImageResponseSerializer serializer]; 
     manager.requestSerializer = [AFJSONRequestSerializer serializer]; 
     if ([SLLoginManager sharedManager].accessToken) { 
      [manager.requestSerializer setValue:[SLLoginManager sharedManager].accessToken forHTTPHeaderField:@"access_token"]; 
     } 

     [manager GET:_imageURL 
      parameters:nil 
      success:^(AFHTTPRequestOperation *operation, id responseObject) { 
       blockSelf.returnAttributes = responseObject; 
       if (blockSelf.completionBlock) { 
        blockSelf.completionBlock(blockSelf.returnAttributes,nil); 
       } 
       [[SLNetworkQueueManager sharedManager] requestDidSucceed:blockSelf]; 
      } failure:^(AFHTTPRequestOperation *operation, NSError *error) { 
       //check error code for network errors 
       NSError* err = error; 
       [blockSelf failOrTryRefreshTokenForError:err]; 

      }]; 
    }; 

    return executionBlock; 
} 

是什么给了?

回答

0

问题实际上是来自服务器的图像,即使浏览器可以打开它们。 png标签已损坏