Я использую AsyncTask для отправки некоторых сообщений на сервер. Этот AsynTask - , определенный в другим классом (CommTask.java) из основного класса активности. Гнездо используется, A WebSocket из weberknecht, создается в способе AsyncTask doInBackground, и у меня есть открытый метод (SendDataToServer) в CommTask.java, то есть используется в основной деятельности через экземпляр класса CommTask.java.android.os.NetworkOnMainThreadException, когда я использую AsyncTask и HTTPS
Я инициализировать экземпляр в основной деятельности перед использованием общественного метода CommTask:
commTask = new CommTask(serverIpAddress, socket, textStatus);
commTask.execute();
и когда у меня есть данные для передачи, то я называю:
commTask.SendDataToServer(...);
Когда он используется в основной деятельности публичный метод из CommTask.java и сокета использует протокол http
socket = new SocketIO("http://"+this.serverIpAddress+":3000/");
исключения не rised, но когда он использует протокол HTTPS
socket = new SocketIO("https://"+this.serverIpAddress+":3000/");
android.os.NetworkOnMainThreadException apears.
Любая идея? Почему это может произойти?
Если вам нужно взглянуть на код увидеть это:
https://github.com/Javi44/LocAALTOn/tree/WebSockets-Gottox/src/com/android/locaalton
EDIT:
Полный стек здесь ошибка:
03-12 15:14:36.090: W/System.err(27088): android.os.NetworkOnMainThreadException
03-12 15:14:36.100: W/System.err(27088): at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1118)
03-12 15:14:36.100: W/System.err(27088): at org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl$SSLOutputStream.write(OpenSSLSocketImpl.java:686)
03-12 15:14:36.100: W/System.err(27088): at java.io.BufferedOutputStream.flushInternal(BufferedOutputStream.java:185)
03-12 15:14:36.100: W/System.err(27088): at java.io.BufferedOutputStream.flush(BufferedOutputStream.java:85)
03-12 15:14:36.100: W/System.err(27088): at de.roderick.weberknecht.WebSocketConnection.send(WebSocketConnection.java:165)
03-12 15:14:36.100: W/System.err(27088): at io.socket.WebsocketTransport.send(WebsocketTransport.java:137)
03-12 15:14:36.100: W/System.err(27088): at io.socket.IOConnection.sendPlain(IOConnection.java:452)
03-12 15:14:36.100: W/System.err(27088): at io.socket.IOConnection.emit(IOConnection.java:825)
03-12 15:14:36.100: W/System.err(27088): at io.socket.SocketIO.emit(SocketIO.java:236)
03-12 15:14:36.100: W/System.err(27088): at com.android.locaalton.CommTask.SendDataToServer(CommTask.java:137)
03-12 15:14:36.105: W/System.err(27088): at com.android.locaalton.LocAALTOnActivity$2.onClick(LocAALTOnActivity.java:200)
03-12 15:14:36.105: W/System.err(27088): at android.view.View.performClick(View.java:4211)
03-12 15:14:36.105: W/System.err(27088): at android.view.View$PerformClick.run(View.java:17267)
03-12 15:14:36.105: W/System.err(27088): at android.os.Handler.handleCallback(Handler.java:615)
03-12 15:14:36.105: W/System.err(27088): at android.os.Handler.dispatchMessage(Handler.java:92)
03-12 15:14:36.105: W/System.err(27088): at android.os.Looper.loop(Looper.java:137)
03-12 15:14:36.105: W/System.err(27088): at android.app.ActivityThread.main(ActivityThread.java:4898)
03-12 15:14:36.105: W/System.err(27088): at java.lang.reflect.Method.invokeNative(Native Method)
03-12 15:14:36.105: W/System.err(27088): at java.lang.reflect.Method.invoke(Method.java:511)
03-12 15:14:36.105: W/System.err(27088): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1006)
03-12 15:14:36.105: W/System.err(27088): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:773)
03-12 15:14:36.105: W/System.err(27088): at dalvik.system.NativeStart.main(Native Method)
Просьба опубликовать всю трассировку стека Java, содержащую ваше исключение. – CommonsWare
Подробнее о AsyncTasks читайте в некоторых онлайн-примерах. Вам нужно запустить asynctask, используя asynctask.execute(). Вы не можете просто вызвать функции в своей Задаче и ожидать, что они будут работать в фоновом режиме. –
Ваш общедоступный метод в CommTask вызывается из основного действия основного протектора. – njzk2