2012-06-20 82 views
2

我有一個iOS應用程序使用AFNetworking進行網絡調用。除了當我試圖捕獲401狀態碼時,一切都很好。呼叫返回響應總是需要大約60秒。有什麼設置或什麼會導致這個?每一次成功的呼叫立即返回我也嘗試通過curl來運行這個代碼,並且401會立即返回。這裏是我正在使用的代碼:AFNetworking需要60秒才能返回401狀態碼?

 AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request]; 

     __weak AFHTTPRequestOperation *_operation = operation; 

     [operation setCompletionBlock:^{ 
        //It takes 60 seconds to get to this line if a 401 is encountered 
      DDLogInfo(@"Response body: %@", [_operation responseString]); 

      if(_operation.response.statusCode == 401) { 
       DDLogInfo(@"Expired Auth Token"); 
      } 

      NSError *error = [_operation error];   
      NSData *responseData = [_operation responseData]; 

      if(responseData == nil && error == nil) 
       error = [NSError errorWithDomain:isDevMode ? DEV_SERVICE_BASE_URL : SERVICE_BASE_URL code:-1 userInfo:nil]; 

      callback(error, responseData); 
     }]; 

     [operation start]; 

回答

2

您需要用超時值初始化您的NSURLRequest,以滿足您的需要。

NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:inURL 
                 cachePolicy:NSURLRequestReturnCacheDataElseLoad 
                timeoutInterval:10.0]; 

查看NSMutableURLRequest文檔。

然後,用初始化的NSMutableURLRequest請求初始化AFNetworking的AFHTTPRequestOperation

+0

好吧我會嘗試。但我仍然困惑,爲什麼這將是一個暫停?它應該立即返回401,因爲服務器正在響應,但是有錯誤狀態碼。我怎樣才能讓它立即返回而不會妨礙超時? – Bobbake4

0

如果請求失敗並顯示代碼401,則調用該操作的故障塊,您尚未設置該操作的故障塊。爲您的操作使用以下AFHTTPRequestOperation方法,並將立即調用失敗塊。

- (void)setCompletionBlockWithSuccess:(void (^)(AFHTTPRequestOperation *operation, id responseObject))success 
           failure:(void (^)(AFHTTPRequestOperation *operation, NSError *error))failure; 

對不起,沒注意到這個帖子是6個月大!無論如何,對於那些仍然面臨問題的人來說,答案依然存在。

+0

你可以舉一個例子來說明如何使用它嗎? – trillions

+0

閱讀這個,它是不言自明 - > http://engineering.gowalla.com/AFNetworking/Classes/AFHTTPRequestOperation.html#//api/name/setCompletionBlockWithSuccess:failure: 快速搜索github給了這個很好的例子 - > https://github.com/poeks/TwitterTest/blob/0f46c3c882e036d19007723d6dca74f3d2561f67/TwitterTest/Networky.m 希望它有助於.. –

相關問題