Приложение, вызывающее бесконечные вызовы API, даже повторная попытка установлена ​​в 5 раз максимум, используя библиотеку loopj - PullRequest
0 голосов
/ 10 июня 2019

Я использую LOOPJ для работы в сети в своем приложении.Недавно, проверив некоторые журналы на стороне сервера, мы столкнулись с бесконечными вызовами API для одной и той же конечной точки и одного и того же пользователя.Хотя я не могу найти проблему, но подозреваю, что внутри библиотеки LOOPJ происходит какой-то бесконечный цикл, который делает возможным такой сценарий.

Мне нужна помощь, если кто-то сталкивался с этой проблемой раньше, и чторешение для этого.

Я попробовал scnerios для расследования сбоя вызова API, но он не вызывает никаких петель.

открытый класс SARestClient {

private static int DEFAULT_TIMEOUT = 50 * 1000;

private static AsyncHttpClient client = new AsyncHttpClient();


public static void setTimemout() {

    client.setConnectTimeout(DEFAULT_TIMEOUT);
    client.setResponseTimeout(DEFAULT_TIMEOUT);
    client.setMaxConnections(6);
    client.setMaxRetriesAndTimeout(5, DEFAULT_TIMEOUT);
    client.setLoggingEnabled(true);

}


public static void delete(String url, RequestParams requestParams, AsyncHttpResponseHandler responseHandler) {
    setTimemout();
    client.delete(getAbsoluteUrl(url), requestParams, responseHandler);
}

public static void delete(String url, AsyncHttpResponseHandler responseHandler) {
    setTimemout();
    client.delete(getAbsoluteUrl(url), responseHandler);
}

public static void post(String url, RequestParams params, AsyncHttpResponseHandler responseHandler) {
    setTimemout();
    client.post(getAbsoluteUrl(url), params, responseHandler);
}

public static void put(Context context, String url, HttpEntity params, AsyncHttpResponseHandler responseHandler) {
    client.put(context, getAbsoluteUrl(url), null, params, "application/json", responseHandler);
}

public static void put(String url, RequestParams params, AsyncHttpResponseHandler responseHandler) {
    setTimemout();
    client.put(getAbsoluteUrl(url), params, responseHandler);
}

public static void addHeader(String key, String value) {
    client.addHeader(key, value);
}

public static void removeHeader() {
    client.removeAllHeaders();
}

public static void get(String url, AsyncHttpResponseHandler responseHandler) {
    setTimemout();
    String actualUrl = getAbsoluteUrl(url);
    //////////////////////Log.e("Url", "" + actualUrl);
    client.get(actualUrl, responseHandler);
}


public static void put(String url, AsyncHttpResponseHandler responseHandler) {
    setTimemout();
    client.put(getAbsoluteUrl(url), responseHandler);
}

public static void post(Context mContext, String url, StringEntity entity, AsyncHttpResponseHandler responseHandler) {
    setTimemout();
    client.post(mContext, getAbsoluteUrl(url), entity, "application/json", responseHandler);
}

/**
 * Only for generating path on map
 *
 * @param url             url of google api to show path
 * @param responseHandler response handler
 */
public static void post(String url, AsyncHttpResponseHandler responseHandler) {
    setTimemout();
    client.post(getAbsoluteUrl(url), responseHandler);
}

private static String getAbsoluteUrl(String relativeUrl) {
    String url = ConfigFile.getInstance().getServerUrl();

     Log.e("finalurl", url + relativeUrl);
    return url + relativeUrl;
}

Это мой клиент для отдыхакоторый я использую с некоторыми атрибутами, чтобы сделать вызовы API.

...