繁体   English   中英

如何修复连接超时

[英]how to fix connection timed out in retrofit

我的连接超时:

2019-09-01 18:20:52.732 9389-9389/com.example.homecinema E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.homecinema, PID: 9389
io.reactivex.exceptions.OnErrorNotImplementedException: connect timed out
    at io.reactivex.internal.functions.Functions$OnErrorMissingConsumer.accept(Functions.java:704)
    at io.reactivex.internal.functions.Functions$OnErrorMissingConsumer.accept(Functions.java:701)
    at io.reactivex.internal.observers.LambdaObserver.onError(LambdaObserver.java:77)
    at io.reactivex.internal.operators.observable.ObservableObserveOn$ObserveOnObserver.checkTerminated(ObservableObserveOn.java:276)
    at io.reactivex.internal.operators.observable.ObservableObserveOn$ObserveOnObserver.drainNormal(ObservableObserveOn.java:172)
    at io.reactivex.internal.operators.observable.ObservableObserveOn$ObserveOnObserver.run(ObservableObserveOn.java:252)
    at io.reactivex.android.schedulers.HandlerScheduler$ScheduledRunnable.run(HandlerScheduler.java:109)
    at...

该代码概述如下

public void loginUser(String email, String password) {
    compositeDisposable.add(myAPI.loginUser(email,password)
        .subscribeOn(Schedulers.io())
            .observeOn(AndroidSchedulers.mainThread())
            .subscribe(new Consumer<String>() {
                @Override
                public void accept(String s) throws Exception {
                    if(s.contains("encrypted_password")){
                        Toast.makeText(getApplicationContext(), "login 
                        Successful" , LENGTH_SHORT).show();
                    }
                    else {
                        Toast.makeText(getApplicationContext(),""+s, 
                          LENGTH_SHORT).show();
                    }
                }
            })
    );

如下所示,将Custom Http Client与Retrotit Builder一起使用:

public class RetrofitConfig {

    public Retrofit getConfig(){
        return new Retrofit.Builder().client(httpClient())
            .baseUrl(ApiDomain.BASE_URL)
            .addConverterFactory(GsonConverterFactory.create())
            .build();
    }
    private OkHttpClient httpClient() {
        return new OkHttpClient.Builder()
            .connectTimeout(20, TimeUnit.SECONDS)
            .writeTimeout(20, TimeUnit.SECONDS)
            .readTimeout(30, TimeUnit.SECONDS)
            .build();
    }
}

这将管理您的改造超时。 当然,请确保在超时之前得到响应,否则您也需要处理重试。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM