2015-09-04 62 views
0

i上使用的Java電報API的IntelliJ IDEA

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


在窗戶電報核心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 。如果你的DC不同,你會超時
2.有其他地方建議使用doRpcCallSide來代替它,它適用於某些而不適用於其他地方。原因是它翻譯成

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

其中true表示authRequired。
3.如果你想這樣做沒有授權,然後使用

api.doRpcCallNonAuth