2014-08-27 53 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