2014-08-27 92 views
1

我試圖使用電報的Java API https://github.com/ardock/telegram-api ,我開始用一些簡單的RPC調用:電報的Java API-socket連接問題

SampleApiState apiState = new SampleApiState(connections); 
TLRequestAuthCheckPhone checkRequest = new TLRequestAuthCheckPhone("+1234567890"); 
TelegramApi api = new TelegramApi(apiState, new ApplicationInfo(), 
      new ApiCallback() { 
       @Override 
       public void onUpdatesInvalidated(TelegramApi api) { 
        // TODO Auto-generated method stub 
        Log.i(TAG, "onUpdatesInvalidated"); 
       } 

       @Override 
       public void onAuthCancelled(TelegramApi api) { 
        // TODO Auto-generated method stub 
        Log.i(TAG, "onAuthCancelled"); 
       } 

       @Override 
       public void onUpdate(TLAbsUpdates updates) { 
        // TODO Auto-generated method stub 
        Log.i(TAG, "onUpdate"); 
       } 
      }); 
    TLCheckedPhone checkedPhone = api.doRpcCall(checkRequest); 

這裏是日誌:

11524-11580/com.example.tltest W/System.err﹕ java.net.SocketException: socket failed: EACCES (Permission denied) 
11524-11580/com.example.tltest W/System.err﹕ at libcore.io.IoBridge.socket(IoBridge.java:576) 
11524-11580/com.example.tltest W/System.err﹕ at  java.net.PlainSocketImpl.create(PlainSocketImpl.java:201) 
11524-11580/com.example.tltest W/System.err﹕ at java.net.Socket.checkOpenAndCreate(Socket.java:664) 
11524-11580/com.example.tltest W/System.err﹕ at java.net.Socket.connect(Socket.java:808) 
11524-11580/com.example.tltest W/System.err﹕ at org.telegram.mtproto.transport.PlainTcpConnection.<init>(PlainTcpConnection.java:32) 
11524-11580/com.example.tltest W/System.err﹕ at org.telegram.mtproto.pq.Authorizer.doAuth(Authorizer.java:198) 
11524-11580/com.example.tltest W/System.err﹕ at org.telegram.api.engine.TelegramApi$ConnectionThread.waitForDc(TelegramApi.java:842) 
11524-11580/com.example.tltest W/System.err﹕ at org.telegram.api.engine.TelegramApi$ConnectionThread.run(TelegramApi.java:907) 
11524-11588/com.example.tltest I/System.out﹕ api#1001#Uploader:UploadFileThread iteration 
11524-11580/com.example.tltest W/System.err﹕ Caused by: libcore.io.ErrnoException: socket failed: EACCES (Permission denied) 
11524-11580/com.example.tltest W/System.err﹕ at libcore.io.Posix.socket(Native Method) 
11524-11580/com.example.tltest W/System.err﹕ at libcore.io.BlockGuardOs.socket(BlockGuardOs.java:181) 
11524-11580/com.example.tltest W/System.err﹕ at libcore.io.IoBridge.socket(IoBridge.java:561) 
11524-11580/com.example.tltest W/System.err﹕ ... 7 more 
11524-11580/com.example.tltest I/System.out﹕ TransportRate:onConnectionFailure #1 
11524-11580/com.example.tltest I/System.out﹕ TransportRate:Transport: #1 173.240.5.1:443 #1.0 
11524-11580/com.example.tltest I/System.out﹕ TransportRate:tryConnection #1 

後連接失敗,它會嘗試連接一次,但不是很成功。我找不到什麼原因以及如何解決這個問題。也許有人有同樣的問題?將非常gratefull一些幫助)

+0

像這樣的異常的唯一的其他例子出現在基於Android的應用程序,這也*似乎*就像一個Android應用程序,但我不是100%肯定的。它是Android應用程序還是其他獨立桌面應用程序? – Makoto 2014-08-27 13:09:56

+0

是的,我試圖在Android應用 – greenfrvr 2014-08-27 13:14:52

回答

1

從你發佈的異常,它似乎是一個Android應用程序,這是一個權限問題。

java.net.SocketException: socket failed: EACCES (Permission denied) 

嘗試將此添加到清單文件:

<uses-permission android:name="android.permission.INTERNET" /> 
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
+0

中使用這個API,非常感謝,完全忘記了權限) – greenfrvr 2014-08-27 13:27:26