2017-03-15 4 views
1

誰かが私の呼び出しが「タイムアウト」になった理由を教えていただけますか?私のアプリはちょうどそこにハングアップ、成功:^(NSURLSessionTask *操作、ID応答)のセクションのコードは実行されませんでした。AFHTTPSessionOperationを使用中にタイムアウトしました

return [self beginRequestController:@"myController" action:@"myAction" parameters:parameters 
success:^(NSURLSessionTask* operation, id response) 
{ 
    NSLog(@"This is NOT being called --->>>: %@", response); 
} failure:^(NSURLSessionTask* operation, NSError* error) 
{ 
    //Handle the error 
}]; 

- (NSOperation*) beginRequestController:(NSString*)controller action: (NSString*)action parameters:(NSDictionary*)parameters success: (RequestSuccess)success failure:(RequestFailure)failure 
{ 
NSOperation *operation = [AFHTTPSessionOperation operationWithManager:manager HTTPMethod:@"POST" URLString:urlString parameters:parameters uploadProgress:nil downloadProgress: nil success:^(NSURLSessionDataTask *task, id responseObject) { 
     NSLog(@"Reponse --->>>: %@", responseObject); 
    } failure:^(NSURLSessionDataTask *task, NSError *error) { 
     NSLog(@"Error --->>>: %@", error); 
    }]; 
[self.operationQueue addOperation:operation]; 
return operation; 
} 
+0

一つだけの操作があります。私はmaxConcurrentOperationCountを1に制限しようとしましたが、それは私の問題を解決しませんでした。エラーメッセージはありません。私は本当にここからどこに行くか分からない。 – Aviva

+0

ありがとう@ロブ、それは最初の呼び出しから成功ブロックに当たっていない、失敗はありません、実際には2番目の呼び出しから成功ブロックを実行したが、その後、それは無期限にフリーズし、最終的にタイムアウトした。私が混乱した理由は、2回目のコールが正常に完了した後、最初の成功ブロックに戻らなかった理由です。最初の呼び出しから失敗ブロックも実行されませんでした。 – Aviva

答えて

1

あなたはブロックをbeginRequestControllerに渡していますが、その方法では何も処理されません。あなたはそれらのブロックを呼びたいと思う。例えば。

- (NSOperation *)beginRequestController:(NSString *)controller action:(NSString *)action parameters:(NSDictionary *)parameters success:(RequestSuccess)success failure:(RequestFailure)failure { 
    NSOperation *operation = [AFHTTPSessionOperation operationWithManager:manager HTTPMethod:@"POST" URLString:urlString parameters:parameters uploadProgress:nil downloadProgress:nil success:^(NSURLSessionDataTask *task, id responseObject) { 
     NSLog(@"Response --->>>: %@", responseObject); 
     if (success) 
      success(task, responseObject); 
    } failure:^(NSURLSessionDataTask *task, NSError *error) { 
     NSLog(@"Error --->>>: %@", error); 
     if (failure) 
      failure(task, error); 
    }]; 
    [self.operationQueue addOperation:operation]; 
    return operation; 
} 

あるいは、さらに簡単:

- (NSOperation *)beginRequestController:(NSString *)controller action:(NSString *)action parameters:(NSDictionary *)parameters success:(RequestSuccess)success failure:(RequestFailure)failure { 
    NSOperation *operation = [AFHTTPSessionOperation operationWithManager:manager HTTPMethod:@"POST" URLString:urlString parameters:parameters uploadProgress:nil downloadProgress: nil success:success failure:failure]; 
    [self.operationQueue addOperation:operation]; 
    return operation; 
} 
+0

あなたは超素晴らしいです!それはそれを修正! – Aviva

関連する問題