2016-07-30 65 views
0

我需要刪除api中的一些項目。我將AFNetworking 2.3.4版本用於api請求,響應。在這裏,我使用DELETE方法刪除api項目,當我調用這個api時,它成功刪除了這些項目,但是它會拋出錯誤「Data is nil」。爲什麼它拋出這個錯誤我不確切地知道。刪除ios中的api值爲「數據爲零」值

這裏是我的API代碼刪除方法:

//使用ArrayList的

  +(void)DeleteDataFromApiWithAccessToken:(NSString *)url withParameters:(NSDictionary *)parameters accessTokenValue:(NSString *)tokenValue returnBlock:(arrayList)block 
     { 
       NSLog(@"loadDataFromApi withParameters :: url %@, params %@",url,parameters); 


AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager]; 

AFJSONRequestSerializer *serializer = [AFJSONRequestSerializer serializer]; 

[serializer setValue:@"application/json" forHTTPHeaderField:@"Content-Type"]; 
[serializer setValue:@"application/json" forHTTPHeaderField:@"Accept"]; 

[serializer setValue:tokenValue forHTTPHeaderField:ACCESSTOKEN_HEADER_FIELD]; 
[serializer setValue:FF_API_HEADER_VALUE forHTTPHeaderField:FF_API_HEADER_FIELD]; 

//serializer.HTTPMethodsEncodingParametersInURI = [NSSet setWithObjects:@"GET", @"HEAD", nil]; 

manager.requestSerializer.timeoutInterval = 0.7; 
manager.requestSerializer.cachePolicy = NSURLRequestReloadIgnoringLocalAndRemoteCacheData; 

manager.requestSerializer = serializer; 

manager.responseSerializer = [AFHTTPResponseSerializer serializer]; 

// Check the Network Connection 
if(![CommonClassApp checkForNetwork]) { 
    [CommonClassApp customAlert:ERR_MSG_NETWORK_PROBLEM]; 
    if (block) block(NULL); 
}else { 
    [manager DELETE:url parameters:parameters success:^(AFHTTPRequestOperation *operation, id responseObject) 
    { 
     NSLog(@"RESPONSE STATUS CODE: %ld", [responseObject statusCode]); 
     if (responseObject != NULL) 
     { 
      NSError *error = nil; 

      NSMutableArray *responseJsonData = [NSJSONSerialization JSONObjectWithData:responseObject options:NSJSONReadingAllowFragments error:&error]; 

      NSLog(@"responseJsonData - %@",responseJsonData); 
      if (block) block(responseJsonData); 
     }else{ 
      [CommonClassApp customAlert:ERR_MSG_INVALID_RESPONSE]; 
      if (block) block(NULL); 
     } 

    } failure:^(AFHTTPRequestOperation *operation, NSError *error) { 


     NSLog(@"failure ::: %ld",(long)[operation.response statusCode]); 
     NSDictionary *responseJsonData = [NSJSONSerialization JSONObjectWithData:(NSData *)error.userInfo[AFNetworkingOperationFailingURLResponseDataErrorKey] options:NSJSONReadingAllowFragments error:&error]; 
     if ([operation.response statusCode] == 401) { 
      if (responseJsonData.count>0) { 
       NSString *userError = [responseJsonData valueForKey:@"code"]; 
       [CommonClassApp customAlert:[ERROR_AUTH_ERROR valueForKey:userError]]; 
      } 
     } 
     else 
     { 
      NSString *userError = [responseJsonData valueForKey:@"message"]; 
      NSLog(@"Error Message: %@",userError); 
      [CommonClassApp customAlert:userError]; 
     } 

     if (block) block(NULL); 
    }]; 
+0

「拋出錯誤」?如在例外情況下還是僅僅打印消息? – Droppy

回答

1

沒有什麼不對的API,什麼是錯的是你的代碼的期望刪除API與訪問令牌。

您要求API刪除資源。那麼對你的期望是什麼樣的迴應?狀態200和一些數據?當然不是。你只是刪除了資源。它不在那裏。

看到這個答案:HTTP status code for update and delete?

摘要:你會接受狀態200,說明沒有任何數據的刪除操作成功,或狀態204的數據,爲已經成功地刪除數據。 (有些人也會接受202,這基本上意味着服務器在說「我聽說過你,我會刪除它」)。