我需要删除 api 中的一些项目。我使用 AFNetworking 2.3.4 版本进行 api 请求、响应。在这里,我使用 DELETE 方法删除 api 项目,当我调用此 api 时,它成功删除了项目,但它抛出错误“数据为零”。为什么它抛出这个错误我不完全知道。
这是我的 API 删除方法代码:
//使用 Arraylist 删除带有访问 token 的 API
+(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);
}];
最佳答案
API 没有任何问题,问题在于你的代码的期望。
您要求 API 删除资源。那么您期望得到什么样的回应呢?状态 200 和一些数据?当然不是。您刚刚删除了该资源。它不在那里。
查看这个答案:HTTP status code for update and delete?
摘要:您应该预期并接受状态 200,其中包含描述删除操作成功的数据,或者状态 204,其中没有任何数据,因为已成功删除数据。 (有些人也会接受 202,这基本上意味着服务器在说“我听到了,我要删除它”)。
关于ios - "Data is Nil"值来自删除 ios 中的 api 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38673229/