2015-06-27 112 views
1

我在我的Android項目上使用OkHttp,在該項目中,我每15分鐘與服務器同步一些數據。我遇到的問題是,當同步開始時,我使用OkHttp向安全域發出異步請求,並在服務器端記錄請求時間/數據以進行調試。OkHttp:SSL通過一次調用生成多個POST請求

檢出日誌,我發現不是有一個同步請求,有時候我有2,3個相同的請求同時被同一個數據觸發。

這裏是負責發佈請求的類的相關部分:

public class PostClientData { 
    private static OkHttpClient client = new OkHttpClient(); 

    public PostClientData(String baseUrl) { 

     BASE_URL = baseUrl; 
     client.setRetryOnConnectionFailure(false); 
     client.setConnectTimeout(120, TimeUnit.SECONDS); 
     client.setProxy(Proxy.NO_PROXY); 
     client.setFollowRedirects(true); 
     client.setFollowSslRedirects(true); 
    } 
    public static void post(String url, HashMap<String, String> postParams, Callback responseHandler) { 
     String postData = getPostData(postParams); 
     String absUrl = getAbsoluteUrl(url); 
     RequestBody body = RequestBody.create(PLAIN, postData); 
     Request request = new Request.Builder() 
      .url(absUrl) 
      .post(body) 
      .build(); 
     client.newCall(request).enqueue(responseHandler); 
    } 
} 

我使用的是服務這裏面調用。該服務每15分鐘使用一次警報啓動。我檢查了一下,每15分鐘只發一次警報。我搜索了一下,發現可能是因爲失敗的請求,客戶端重試相同的請求(但我添加了setRetryOnConnectionFailure (false))。

+0

你在解決這個問題上有什麼進展嗎?我看到了基本相同的概念,完全相同的情況。 – JAManfredi

回答