我在我的一个安卓项目上使用OkHttp,在这个项目中,我每15分钟与服务器同步一些数据。我遇到的问题是,当同步开始时,我使用OkHttp向安全域发送异步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)
)。
发布于 2015-06-27 04:32:18
您可以使用OkHttp拦截器来诊断正在发生的事情。
https://stackoverflow.com/questions/31087113
复制相似问题