2015-02-05 1 views
1

smack 4.1.0-beta2를 사용하여 ejabberd 2.1.11 서버에 연결하는 데 문제가 있습니다. 나는 그것이 SSL 인증서와 관련이 있으며 TLS를 시작하지 않고 ejabberd를 실행하고있는 그런 것들을 다루기를 원하지 않는다고 생각했습니다. 나는 그것이 자기 자신을 서명 한 인증서에 대해 경고하지 않고 psi를 사용하여 ejabberd에 연결할 수 있다는 것을 알고있다.smack-android를 사용하여 보안이 해제 된 ejabberd에 연결하는 방법은 무엇입니까?

어쨌든, 내가 사용하고 다음 ConnectionConfiguration의

XMPPTCPConnectionConfiguration.Builder configBuilder = XMPPTCPConnectionConfiguration.builder(); 
configBuilder.setUsernameAndPassword("username", "password"); 
configBuilder.setServiceName("myapp.ddns.net"); 
configBuilder.setSecurityMode(ConnectionConfiguration.SecurityMode.disabled); 
configBuilder.setCompressionEnabled(false); 
AbstractXMPPConnection xmppConnection = new XMPPTCPConnection(configBuilder.build()); 

그래서 xmppConnection.connect()를하려고 할 때, 내가받을 다음과 같은 예외

02-05 01:01:42.965 17047-17047/net.ddns.myapp W/DNSUtil﹕ Exception while resovling SRV records for myapp.ddns.net. Consider adding '_xmpp-(server|client)._tcp' DNS SRV Records 
    android.os.NetworkOnMainThreadException 
      at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1099) 
      at libcore.io.BlockGuardOs.sendto(BlockGuardOs.java:175) 
      at libcore.io.IoBridge.sendto(IoBridge.java:463) 
      at java.net.PlainDatagramSocketImpl.send(PlainDatagramSocketImpl.java:182) 
      at java.net.DatagramSocket.send(DatagramSocket.java:287) 
      at de.measite.minidns.Client.query(Client.java:199) 
      at de.measite.minidns.Client.query(Client.java:174) 
      at de.measite.minidns.Client.query(Client.java:236) 
      at de.measite.minidns.Client.query(Client.java:149) 
      at org.jivesoftware.smack.util.dns.minidns.MiniDnsResolver.lookupSRVRecords(MiniDnsResolver.java:79) 
      at org.jivesoftware.smack.util.DNSUtil.resolveDomain(DNSUtil.java:162) 
      at org.jivesoftware.smack.util.DNSUtil.resolveXMPPDomain(DNSUtil.java:119) 
      at org.jivesoftware.smack.AbstractXMPPConnection.populateHostAddresses(AbstractXMPPConnection.java:551) 
      at org.jivesoftware.smack.tcp.XMPPTCPConnection.connectUsingConfiguration(XMPPTCPConnection.java:506) 
      at org.jivesoftware.smack.tcp.XMPPTCPConnection.connectInternal(XMPPTCPConnection.java:810) 
      at org.jivesoftware.smack.AbstractXMPPConnection.connect(AbstractXMPPConnection.java:355) 
      at net.ddns.myapp.MainActivity.onCreate(MainActivity.java:61) 
      at android.app.Activity.performCreate(Activity.java:4465) 
      at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1052) 
      at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1932) 
      at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1993) 
      at android.app.ActivityThread.access$600(ActivityThread.java:127) 
      at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1159) 
      at android.os.Handler.dispatchMessage(Handler.java:99) 
      at android.os.Looper.loop(Looper.java:137) 
      at android.app.ActivityThread.main(ActivityThread.java:4507) 
      at java.lang.reflect.Method.invokeNative(Native Method) 
      at java.lang.reflect.Method.invoke(Method.java:511) 
      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:790) 
      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:557) 
      at dalvik.system.NativeStart.main(Native Method) 

또한

02-05 01:01:42.980 17047-17047/net.ddns.myapp E/MyApp﹕ Error while establishing XMPPConnection 
    org.jivesoftware.smack.SmackException$ConnectionException: The following addresses failed: myapp.ddns.net:5222 Exception: null 
      at org.jivesoftware.smack.tcp.XMPPTCPConnection.connectUsingConfiguration(XMPPTCPConnection.java:551) 
      at org.jivesoftware.smack.tcp.XMPPTCPConnection.connectInternal(XMPPTCPConnection.java:810) 
      at org.jivesoftware.smack.AbstractXMPPConnection.connect(AbstractXMPPConnection.java:355) 
      at net.ddns.myapp.MainActivity.onCreate(MainActivity.java:61) 
      at android.app.Activity.performCreate(Activity.java:4465) 
      at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1052) 
      at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1932) 
      at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1993) 
      at android.app.ActivityThread.access$600(ActivityThread.java:127) 
      at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1159) 
      at android.os.Handler.dispatchMessage(Handler.java:99) 
      at android.os.Looper.loop(Looper.java:137) 
      at android.app.ActivityThread.main(ActivityThread.java:4507) 
      at java.lang.reflect.Method.invokeNative(Native Method) 
      at java.lang.reflect.Method.invoke(Method.java:511) 
      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:790) 
      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:557) 
      at dalvik.system.NativeStart.main(Native Method) 

답변

0

StrictMode.ThreadPolicy를 인식하지 못했습니다. Smack 또는 ejabbe와 직접적인 관련이 없습니다. rd, 기본적인 네트워킹이었습니다.

대답 here android.os.NetworkOnMainThreadException를 들어

2

, 당신이 필요로 발견

또한
if (android.os.Build.VERSION.SDK_INT > 9) { 
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build(); 
StrictMode.setThreadPolicy(policy);} 

당신이 호스트 값을 설정하려고 할 수

configBuilder.setHost("myapp.ddns.net");