wjc
1 天以前 770c89ab981b7659faabf8a812a25d99a11bdebf
app/src/main/java/com/hdl/photovoltaic/internet/HttpClient.java
@@ -29,6 +29,8 @@
import com.hdl.photovoltaic.utils.LocalManageUtil;
import com.hdl.photovoltaic.utils.Md5Utils;
import org.jetbrains.annotations.NotNull;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
@@ -36,11 +38,13 @@
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.concurrent.TimeUnit;
import io.reactivex.rxjava3.disposables.Disposable;
import io.reactivex.rxjava3.functions.Consumer;
import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.ConnectionPool;
import okhttp3.FormBody;
import okhttp3.MediaType;
import okhttp3.OkHttpClient;
@@ -99,20 +103,24 @@
        return "";
    }
    private  final OkHttpClient client = new OkHttpClient.Builder()
            .connectTimeout(30, TimeUnit.SECONDS)
            .readTimeout(30, TimeUnit.SECONDS)
            .writeTimeout(30, TimeUnit.SECONDS)
//            .connectionPool(new ConnectionPool(10, 5, TimeUnit.MINUTES))  // 连接池复用
            .build();
    /**
     * 获取json资源用的
     *
     * @param url      地址
     * @param callBack 回调
     */
    public void requestJsonHttpGet(String url, CloudCallBeak<String> callBack) {
    public void requestJsonHttpGetSync(String url, CloudCallBeak<String> callBack) {
        if (TextUtils.isEmpty(url)) {
            if (callBack != null) {
                callBack.onSuccess("");
            }
        }
        HdlThreadLogic.runSubThread(new Runnable() {
            @Override
            public void run() {
@@ -149,7 +157,70 @@
        });
    }
    public void requestJsonHttpGet(String url, CloudCallBeak<String> callBack) {
        if (TextUtils.isEmpty(url)) {
            if (callBack != null) {
                callBack.onSuccess("");
            }
            return;
        }
        Request request = new Request.Builder()
                .url(url)
                .addHeader("Accept-Language", UserConfigManage.getInstance().getCurrentAppLanguage())
                .build();
        //使用异步请求 enqueue()
        client.newCall(request).enqueue(new Callback() {
            @Override
            public void onFailure(@NotNull Call call, @NotNull IOException e) {
                if (callBack != null) {
                    // 切回主线程回调(因为 callBack 可能涉及 UI 操作)
                    HdlThreadLogic.runMainThread(new Runnable() {
                        @Override
                        public void run() {
                            callBack.onFailure(new HDLException(-20002, e.getMessage()));
                        }
                    });
                }
            }
            @Override
            public void onResponse(@NotNull Call call, @NotNull Response response) {
                try  {  // 自动关闭
                    if (response.isSuccessful() && response.body() != null) {
                        String str = response.body().string();
                        if (callBack != null) {
                            // ⭐ 切回主线程
                           HdlThreadLogic.runMainThread(() ->
                                    callBack.onSuccess(str)
                            );
                        }
                    } else {
                        if (callBack != null) {
                            HdlThreadLogic.runMainThread(() ->
                                    callBack.onSuccess("")
                            );
                        }
                    }
                } catch (IOException e) {
                    if (callBack != null) {
                        HdlThreadLogic.runMainThread(new Runnable() {
                            @Override
                            public void run() {
                                callBack.onFailure(new HDLException(-20002, e.getMessage()));
                            }
                        });
                    }
                }finally {
                    response.close();
                }
            }
        });
    }
    /**
     * 请求服务器(get)
@@ -264,7 +335,7 @@
    public Disposable downLoadFile(String url, CloudCallBeak<ResponseBody> callBack) {
        return HxHttp.builder()
                .url(url)
                .headers(HDLSmartHeader.IGNORE_SIGN_HEADER, 1)
                .headers(HDLSmartHeader.IGNORE_SIGN_HEADER, 1).headers(HDLSmartHeader.NOAUTHENTICATION, 1)
                .build()
                .download()
                .subscribe(new Consumer<ResponseBody>() {