2015-09-04 1 views
0

я использовал ява телеграмм API для связи с телеграммой API ядра в окнах IntelliJ IDEA

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


Но приложение сталкивается ошибка тайм-аута в строке
TLConfig config = api.doRpcCall(new TLRequestHelpGetConfig());

Полный исходный код:
TimeoutException на Телеграмма Java клиента

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



кто-то может помочь мне

ответ

2

Ваш тайм-аут может произойти по нескольким причинам:
1. Вы используете

 api.doRpcCall(new TLRequestHelpGetConfig());

В классе TelegramApi это выливается

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

0 там стоит для постоянного тока , Если ваш DC разный, вы будете перерывать
2. Были предложения в других местах, чтобы использовать doRpcCallSide вместо этого, и это сработало для некоторых, а не для других. Причина в том, что он переводится как

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

где true стоит authRequired.
3. Если вы хотите сделать это без авторизации, используйте

api.doRpcCallNonAuth