Search in sources :

Example 1 with BaseCallback

use of com.okhttplib.callback.BaseCallback in project OkHttp3 by MrZhousf.

the class OkMainHandler method handleMessage.

@Override
public void handleMessage(Message msg) {
    final int what = msg.what;
    try {
        switch(what) {
            case //网络请求
            RESPONSE_CALLBACK:
                CallbackMessage callMsg = (CallbackMessage) msg.obj;
                if (null != callMsg.callback) {
                    //开始回调
                    if (!BaseActivityLifecycleCallbacks.isActivityDestroyed(callMsg.requestTag)) {
                        BaseCallback callback = callMsg.callback;
                        if (callback instanceof CallbackOk) {
                            ((CallbackOk) callback).onResponse(callMsg.info);
                        } else if (callback instanceof com.okhttplib.callback.Callback) {
                            HttpInfo info = callMsg.info;
                            if (info.isSuccessful()) {
                                ((com.okhttplib.callback.Callback) callback).onSuccess(info);
                            } else {
                                ((com.okhttplib.callback.Callback) callback).onFailure(info);
                            }
                        }
                    }
                }
                Call call = callMsg.call;
                if (call != null) {
                    if (!call.isCanceled()) {
                        call.cancel();
                    }
                    BaseActivityLifecycleCallbacks.cancel(callMsg.requestTag, call);
                }
                break;
            case //进度回调
            PROGRESS_CALLBACK:
                ProgressMessage proMsg = (ProgressMessage) msg.obj;
                if (null != proMsg.progressCallback) {
                    if (!BaseActivityLifecycleCallbacks.isActivityDestroyed(proMsg.requestTag)) {
                        proMsg.progressCallback.onProgressMain(proMsg.percent, proMsg.bytesWritten, proMsg.contentLength, proMsg.done);
                    }
                }
                break;
            case //上传结果回调
            RESPONSE_UPLOAD_CALLBACK:
                UploadMessage uploadMsg = (UploadMessage) msg.obj;
                if (null != uploadMsg.progressCallback) {
                    if (!BaseActivityLifecycleCallbacks.isActivityDestroyed(uploadMsg.requestTag)) {
                        uploadMsg.progressCallback.onResponseMain(uploadMsg.filePath, uploadMsg.info);
                    }
                }
                break;
            case //下载结果回调
            RESPONSE_DOWNLOAD_CALLBACK:
                DownloadMessage downloadMsg = (DownloadMessage) msg.obj;
                if (null != downloadMsg) {
                    if (!BaseActivityLifecycleCallbacks.isActivityDestroyed(downloadMsg.requestTag)) {
                        downloadMsg.progressCallback.onResponseMain(downloadMsg.filePath, downloadMsg.info);
                    }
                }
                break;
            default:
                super.handleMessage(msg);
                break;
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
}
Also used : Call(okhttp3.Call) ProgressMessage(com.okhttplib.bean.ProgressMessage) CallbackMessage(com.okhttplib.bean.CallbackMessage) CallbackOk(com.okhttplib.callback.CallbackOk) HttpInfo(com.okhttplib.HttpInfo) UploadMessage(com.okhttplib.bean.UploadMessage) DownloadMessage(com.okhttplib.bean.DownloadMessage) BaseCallback(com.okhttplib.callback.BaseCallback)

Example 2 with BaseCallback

use of com.okhttplib.callback.BaseCallback in project OkHttp3 by MrZhousf.

the class HttpHelper method doRequestAsync.

/**
     * 异步请求
     */
void doRequestAsync(final OkHttpHelper helper) {
    final HttpInfo info = httpInfo;
    final BaseCallback callback = helper.getCallback();
    Request request = helper.getRequest();
    String url = info.getUrl();
    if (!checkUrl(url)) {
        //主线程回调
        Message msg = new CallbackMessage(OkMainHandler.RESPONSE_CALLBACK, callback, retInfo(info, HttpInfo.CheckURL), requestTag, null).build();
        OkMainHandler.getInstance().sendMessage(msg);
        return;
    }
    request = request == null ? buildRequest(info, helper.getRequestMethod(), helper.getProgressCallback()) : request;
    showUrlLog(request);
    Call call = httpClient.newCall(request);
    BaseActivityLifecycleCallbacks.putCall(requestTag, call);
    call.enqueue(new Callback() {

        @Override
        public void onFailure(Call call, IOException e) {
            //主线程回调
            int code = HttpInfo.CheckNet;
            if (e instanceof UnknownHostException) {
                if (!helperInfo.getOkHttpUtil().isNetworkAvailable()) {
                    code = HttpInfo.CheckNet;
                } else {
                    code = HttpInfo.CheckURL;
                }
            } else if (e instanceof SocketTimeoutException) {
                if (null != e.getMessage()) {
                    if (e.getMessage().contains("failed to connect to"))
                        code = HttpInfo.ConnectionTimeOut;
                    if (e.getMessage().equals("timeout"))
                        code = HttpInfo.WriteAndReadTimeOut;
                }
            }
            Message msg = new CallbackMessage(OkMainHandler.RESPONSE_CALLBACK, callback, retInfo(info, code, "[" + e.getMessage() + "]"), requestTag, call).build();
            OkMainHandler.getInstance().sendMessage(msg);
        }

        @Override
        public void onResponse(Call call, Response res) throws IOException {
            //主线程回调
            Message msg = new CallbackMessage(OkMainHandler.RESPONSE_CALLBACK, callback, dealResponse(helper, res, call), requestTag, call).build();
            OkMainHandler.getInstance().sendMessage(msg);
        }
    });
}
Also used : Call(okhttp3.Call) UploadMessage(com.okhttplib.bean.UploadMessage) CallbackMessage(com.okhttplib.bean.CallbackMessage) DownloadMessage(com.okhttplib.bean.DownloadMessage) Message(android.os.Message) UnknownHostException(java.net.UnknownHostException) CallbackMessage(com.okhttplib.bean.CallbackMessage) Request(okhttp3.Request) IOException(java.io.IOException) HttpInfo(com.okhttplib.HttpInfo) Response(okhttp3.Response) ProgressCallback(com.okhttplib.callback.ProgressCallback) Callback(okhttp3.Callback) BaseCallback(com.okhttplib.callback.BaseCallback) SocketTimeoutException(java.net.SocketTimeoutException) BaseCallback(com.okhttplib.callback.BaseCallback)

Aggregations

HttpInfo (com.okhttplib.HttpInfo)2 CallbackMessage (com.okhttplib.bean.CallbackMessage)2 DownloadMessage (com.okhttplib.bean.DownloadMessage)2 UploadMessage (com.okhttplib.bean.UploadMessage)2 BaseCallback (com.okhttplib.callback.BaseCallback)2 Call (okhttp3.Call)2 Message (android.os.Message)1 ProgressMessage (com.okhttplib.bean.ProgressMessage)1 CallbackOk (com.okhttplib.callback.CallbackOk)1 ProgressCallback (com.okhttplib.callback.ProgressCallback)1 IOException (java.io.IOException)1 SocketTimeoutException (java.net.SocketTimeoutException)1 UnknownHostException (java.net.UnknownHostException)1 Callback (okhttp3.Callback)1 Request (okhttp3.Request)1 Response (okhttp3.Response)1