修正可能なhttpステータスコードのリストがありますが、失敗ブロックでhttpステータスコードを取得できればよりきれいになると思います。
OK、操作オブジェクトで答えを見つけました
failure:^(AFHTTPRequestOperation *operation, NSError *error){
NSLog(@"error code %d",[operation.response statusCode]);
}];
OK、操作オブジェクトで答えを見つけました
failure:^(AFHTTPRequestOperation *operation, NSError *error){
NSLog(@"error code %d",[operation.response statusCode]);
}];
AFNetworkingの新しいバージョンでは、エラーから応答オブジェクトを取得できます。
[[[error userInfo] objectForKey:AFNetworkingOperationFailingURLResponseErrorKey] statusCode]
これは、エラー処理を行のさらに上で行っており、応答オブジェクトを迂回させたくない場合に便利です。
AFNetworking 3.0の場合、使用
failure:^(NSURLSessionTask *operation, NSError *error) {
NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *)operation.response;
httpResponse.statusCode;
NSLog(@"status code: %li", (long)httpResponse.statusCode);
}
NSInteger operationStatusCode = [operation.error code];
NSInteger httpStatusCode = operation.response.statusCode;
リクエストがキャンセル/到達不能/タイムアウトになった場合、httpStatusCode
は常に0
。
または、operationStatusCode
を理解することで問題を特定できます。これはNSError
オブジェクトです。
operationStatusCode
は-1009
。operationStatusCode
は-999
。Appleのドキュメント で、他のすべてのNSError
コードとその説明を確認できます。
((error.userInfo[AFNetworkingOperationFailingURLResponseErrorKey])
as! HTTPURLResponse).statusCode
それは私のために働いていますあなたのリクエストに以下の行を追加してください
manager.requestSerializer = [AFJSONRequestSerializerシリアライザー];