电报java客户端上的超时异常 [英] TimeoutException on telegram java client

查看:47
本文介绍了电报java客户端上的超时异常的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用java电报API与windows intellij idea中的电报核心API进行通信

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


但该应用程序面临超时错误
TLConfig config = api.doRpcCall(new TLRequestHelpGetConfig());

完整源代码:

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());

在 TelegramApi 类中,这转化为

In the TelegramApi class this translates into

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

0 代表 DC.如果您的 DC 不同,您将超时
2. 在其他地方有建议使用 doRpcCallSide 代替,它对某些人有效,对其他人无效.原因是它转化为

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);

true 代表 authRequired.
3. 如果您想在未经授权的情况下执行此操作,请使用

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

api.doRpcCallNonAuth

这篇关于电报java客户端上的超时异常的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆