2015-09-04 61 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