OkHttp:一次调用生成 SSL 多个 POST 请求
OkHttp: SSL Multiple POST requests generated from one call
我在我的 Android 项目中使用 OkHttp,我在其中每 15 分钟与服务器同步一些数据。我遇到的问题是,当同步开始时,我使用 OkHttp 向安全域发出异步 post 请求,并在服务器端记录请求 time/data 以进行调试。
查看日志,我发现有时我没有发出一个同步请求,而是同时触发了 2,3 个具有相同数据的相同请求。
这里是 class 负责 post 请求的相关部分:
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)
)。
您可以使用 OkHttp interceptor 来诊断发生了什么。
我在我的 Android 项目中使用 OkHttp,我在其中每 15 分钟与服务器同步一些数据。我遇到的问题是,当同步开始时,我使用 OkHttp 向安全域发出异步 post 请求,并在服务器端记录请求 time/data 以进行调试。
查看日志,我发现有时我没有发出一个同步请求,而是同时触发了 2,3 个具有相同数据的相同请求。
这里是 class 负责 post 请求的相关部分:
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)
)。
您可以使用 OkHttp interceptor 来诊断发生了什么。