I use getConnect
API from getX, and check validate the response got from the API. But at some unexpected time (not happen always, mostly occur with android version 10 device), only got null from the API response. Actually I suppose requesting API may get FAIL or SUCCESS for every request. Now only got null response. Why this happen, is it issue of the package or android device version error or, how can I fix it?
class ApiServices with DataStorageMixin {
final Logger log = Logger();
static GetConnect? _instance;
ApiServices._() {
if (_instance == null) {
_instance = GetConnect(timeout: const Duration(seconds: 10));
_instance!.httpClient.addRequestModifier<dynamic>((request) {
log.i("Request method: ${request.method}\nUrl: ${request.url}");
log.i("Request header: ${request.headers}");
return request;
});
_instance!.httpClient.addResponseModifier((request, response) {
log.i("Response is : ${response.status.code}\nBody: ${response.body}");
return response;
});
}
}
factory ApiServices.instance() => ApiServices._();
void validateResponse({
required Response? response,
required Callback<Map<String, dynamic>> onSuccess,
required Callback<Map<String, dynamic>> onRequestError,
required Callback<Map<String, dynamic>> onServerError,
}) {
print('RB --- ${response!.body}');
if (response!.body != null) {
Map<String, dynamic> responseBody = response.body;
if (response.statusCode == 200 || response.statusCode == 201) {
bool isSuccessResponse = responseBody['err'] == CODE_SUCCESS ||
responseBody['err'] == CODE_NEW_USER ||
responseBody['err'] == CODE_REGISTERED_USER ||
responseBody['err'] == CODE_CREATE;
if (isSuccessResponse) {
onSuccess(responseBody);
} else {
onRequestError(responseBody);
}
} else {
onServerError(responseBody);
}
}
}
Future<void> apiPostCall({
String? bearerToken,
required String endPoint,
bool isFullEndPoint = false,
Map<String, dynamic>? data,
required Callback<Map<String, dynamic>> onSuccess,
required Callback<Map<String, dynamic>> onRequestError,
required Callback<Map<String, dynamic>> onServerError,
}) async {
// try {
Response? response = await _instance!.post(
isFullEndPoint ? endPoint : '$BASE_URL$endPoint',
data,
headers: await getHeader(
url: endPoint,
bearerToken: bearerToken,
),
);
validateResponse(
response: response,
onSuccess: onSuccess,
onRequestError: onRequestError,
onServerError: onServerError,
);
// } catch (e) {
// onServerError({'error': e});
// }
}
}
In this method validateResponse()
, I log response.body
and it got null
but for unexpected time (Not happen every request).
void validateResponse({
required Response? response,
required Callback<Map<String, dynamic>> onSuccess,
required Callback<Map<String, dynamic>> onRequestError,
required Callback<Map<String, dynamic>> onServerError,
}) {
print('RB --- ${response!.body}');
if (response!.body != null) {
Map<String, dynamic> responseBody = response.body;
if (response.statusCode == 200 || response.statusCode == 201) {
bool isSuccessResponse = responseBody['err'] == CODE_SUCCESS ||
responseBody['err'] == CODE_NEW_USER ||
responseBody['err'] == CODE_REGISTERED_USER ||
responseBody['err'] == CODE_CREATE;
if (isSuccessResponse) {
onSuccess(responseBody);
} else {
onRequestError(responseBody);
}
} else {
onServerError(responseBody);
}
}
}