TimeoutException on telegram java client

ぃ、小莉子 提交于 2019-12-11 23:52:10

问题


i used the java telegram api to communicate with telegram core api in windows intellij idea

https://github.com/ex3ndr/telegram-api


But the app is facing Timeout error in line
TLConfig config = api.doRpcCall(new TLRequestHelpGetConfig());

Full source code:

AppInfo appinfo=new AppInfo(45687, "Myapp", "154", "587","en");
    TLRequestAuthCheckPhone checkRequest = new TLRequestAuthCheckPhone("96521452365");


    MyApiStorage state=new MyApiStorage();
    TelegramApi api = new TelegramApi(state, appinfo, new ApiCallback()
    {
        public void onApiDies(TelegramApi api) {
            // When auth key or user authorization dies
        }
        @Override
        public void onUpdatesInvalidated(TelegramApi api) {
            System.out.print("############################### onUpdatesInvalidated");
            // When api engine expects that update sequence might be broken
        }

        @Override
        public void onAuthCancelled(TelegramApi ta) {
            System.out.print("############################### onAuthCancelled");
            throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
        }

        @Override
        public void onUpdate(TLAbsUpdates updates) {
            System.out.print("############################### onUpdate");
            System.out.println("user Id ::::"+((TLUpdateShortMessage) updates).getFromId());

        }
    });
    api.switchToDc(1);
    TLConfig config = api.doRpcCall(new TLRequestHelpGetConfig());
    System.out.print("############################### config" + config.getTestMode());
    state.updateSettings(config);
    api.doRpcCall(checkRequest, new RpcCallbackEx<TLCheckedPhone>() {
        public void onConfirmed() {
            System.out.print("############################### onConfirmed");
        }

        public void onResult(TLCheckedPhone result) {
            boolean invited = result.getPhoneInvited();
            boolean registered = result.getPhoneRegistered();
            System.out.print("############################### onResult" + registered);
            // TODO process response further
        }

        public void onError(int errorCode, String message) {
            System.out.print("############################### onError" + message);
        }
    });



can someone help me


回答1:


Your timeout might happen for several reasons:
1. You are using

    api.doRpcCall(new TLRequestHelpGetConfig());

In the TelegramApi class this translates into

    return this.doRpcCall(method, timeout, 0);

0 there stands for DC. If your DC is different you will timeout
2. There were suggestions in other places to use doRpcCallSide instead and it worked for some and not for others. The reason is it translates into

    return this.doRpcCall(method, 15000, this.primaryDc, true);

where true stands authRequired.
3. If you want to do this without authorization then use

api.doRpcCallNonAuth


来源:https://stackoverflow.com/questions/32403239/timeoutexception-on-telegram-java-client

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!