All Downloads are FREE. Search and download functionalities are using the official Maven repository.

cn.wandersnail.common.http.SyncGeneralRequestTask Maven / Gradle / Ivy

There is a newer version: 2.2.1
Show newest version
package cn.wandersnail.common.http;

import okhttp3.ResponseBody;
import retrofit2.Call;
import retrofit2.Converter;
import retrofit2.Response;

/**
 * date: 2019/8/23 21:03
 * author: zengfansheng
 */
class SyncGeneralRequestTask {
    private boolean complete;
    final ConvertedResponse convertedResp;

    SyncGeneralRequestTask(Call call, Converter converter, Configuration configuration) {
        convertedResp = new ConvertedResponse<>(call);
        if (configuration.callTimeout > 0) {
            EasyHttp.executorService.execute(() -> {
                int secondCount = 0;
                while (secondCount++ < configuration.callTimeout) {
                    try {
                        Thread.sleep(1000);
                    } catch (InterruptedException ignore) {
                    }
                    if (complete) {
                        return;
                    }
                }
                //如果到了这里,说明超时了,取消请求
                call.cancel();
            });
        }
        try {
            Response response = call.execute();
            complete = true;
            convertedResp.raw = response.raw();
            if (response.isSuccessful()) {
                try {
                    convertedResp.convertedResponse = converter.convert(response.body());
                } catch (Throwable t) {
                    convertedResp.convertError = t;
                }
            }
        } catch (Exception e) {
            //取消任务会抛异常
        }
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy