android - OkHttp:一次调用生成 SSL 多个 POST 请求

标签 android ssl okhttp

我在我的一个 Android 项目上使用 OkHttp,我每 15 分钟与服务器同步一些数据。我遇到的问题是,当同步开始时,我使用 OkHttp 向安全域发出异步发布请求,并在服务器端记录请求时间/数据以进行调试。

查看日志,我发现有时我没有发出一个同步请求,而是同时触发了 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))。

最佳答案

您可以使用 OkHttp interceptor诊断发生了什么。

关于android - OkHttp:一次调用生成 SSL 多个 POST 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31087113/

相关文章:

android - Keystore SHA1 不同于来自 APK 的 cert.rsa SHA1

java - 使用逗号分隔和多个参数创建 Rest url

java - 使用okhttp时如何将Map添加到RequestBody而不是单独添加键值对?

android - 调用 Google api 从另一个 Activity 中退出

Android market 应用设备国家问题

java - Java 中服务器端 SSL 的概念概述

java - Okhttp javax.net.ssl.sslexception : connection closed by peer

android - hide()/show() 系统是如何工作的? fragment 机器人

android - 如何在android中创建这个文本标题形状

java - 使用 axis wsdl2java 在 java 中使用 HTTPS soab 服务