Я использую NanoHTTPD (это), чтобы создать простой сервер. Я тоже следую этому руководству для тестирования. Я глубоко ищу проблему на GitHub, но не нашел решения. Я хочу только показывать простой Toast, когда кто-то открывает адрес, указанный в моем проекте, в своем браузере.
Вот код для моего Server.class:
public class Server extends NanoHTTPD {
private static Server server = null;
Context context;
@Override
public Response serve(IHTTPSession session) {
String msg = "My Server in Android\n";
// context = ProgramProperties.getAppContext();
if (session.getMethod() == Method.GET) {
Map headers = session.getHeaders();
if (headers.get("username") != null) {
String username = headers.get("username");
msg += "Hi, " + username; /* Output for browser */
// Toast.makeText(context, "Receive Connection, Hello " + username , Toast.LENGTH_SHORT).show();
} else {
msg+="Wrong headers parameters";
// Toast.makeText(context, "Receive Connection with null header", Toast.LENGTH_SHORT).show();
}
}
return newFixedLengthResponse(msg + "");
}
private Server() throws IOException {
super(8080);
}
public static Server getServer() throws IOException{
if(server == null){
server = new Server();
}
return server;
}
}
У меня есть один одноэлементный класс со статическим контекстом, поэтому я могу гарантировать, что контекст из приведенного выше кода не равен нулю.
Проблема в том, что когда я комментирую строку Toast, как указано выше, все работает как обычно. Браузер пользователя показывает выходные данные метода Response. Но когда я использовал Toast, это было похоже на то, что Android не отправляет данные в браузер, поэтому браузер не отображает правильный вывод.
Изменить
Вот мой журнал:
02-14 12:31:54.574 25609-26777/com E/NanoHTTPD: Communication with the client broken, or an bug in the handler code java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
at android.os.Handler.(Handler.java:200)
at android.os.Handler.(Handler.java:114)
at android.widget.Toast$TN$3.(Toast.java:350)
at android.widget.Toast$TN.(Toast.java:350)
at android.widget.Toast.(Toast.java:107)
at android.widget.Toast.makeText(Toast.java:263)
at Server.serve(Server.java:34) at NanoHTTPD.NanoHTTPD$1.handle(NanoHTTPD.java:376)
at NanoHTTPD.NanoHTTPD$1.handle(NanoHTTPD.java:372)
at NanoHTTPD.NanoHTTPD.handle(NanoHTTPD.java:535)
at NanoHTTPD.HTTPSession.execute(HTTPSession.java:421)
at NanoHTTPD.ClientHandler.run(ClientHandler.java:75)
at java.lang.Thread.run(Thread.java:761)
02-14 12:32:04.882 25609-26932/com E/NanoHTTPD: Communication with the client broken, or an bug in the handler code java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
at android.os.Handler.(Handler.java:200)
at android.os.Handler.(Handler.java:114)
at android.widget.Toast$TN$3.(Toast.java:350)
at android.widget.Toast$TN.(Toast.java:350)
at android.widget.Toast.(Toast.java:107)
at android.widget.Toast.makeText(Toast.java:263) at Server.serve(Server.java:34)
at NanoHTTPD.NanoHTTPD$1.handle(NanoHTTPD.java:376)
at NanoHTTPD.NanoHTTPD$1.handle(NanoHTTPD.java:372)
at NanoHTTPD.NanoHTTPD.handle(NanoHTTPD.java:535)
at NanoHTTPD.HTTPSession.execute(HTTPSession.java:421)
at NanoHTTPD.ClientHandler.run(ClientHandler.java:75)
at java.lang.Thread.run(Thread.java:761)
Подробнее здесь: https://stackoverflow.com/questions/487 ... -nanohttpd
Показать всплывающее сообщение о методе Response NanoHTTPD ⇐ Android
Форум для тех, кто программирует под Android
-
Anonymous
1770106494
Anonymous
Я использую NanoHTTPD (это), чтобы создать простой сервер. Я тоже следую этому руководству для тестирования. Я глубоко ищу проблему на GitHub, но не нашел решения. Я хочу только показывать простой Toast, когда кто-то открывает адрес, указанный в моем проекте, в своем браузере.
Вот код для моего Server.class:
public class Server extends NanoHTTPD {
private static Server server = null;
Context context;
@Override
public Response serve(IHTTPSession session) {
String msg = "My Server in Android\n";
// context = ProgramProperties.getAppContext();
if (session.getMethod() == Method.GET) {
Map headers = session.getHeaders();
if (headers.get("username") != null) {
String username = headers.get("username");
msg += "Hi, " + username; /* Output for browser */
// Toast.makeText(context, "Receive Connection, Hello " + username , Toast.LENGTH_SHORT).show();
} else {
msg+="Wrong headers parameters";
// Toast.makeText(context, "Receive Connection with null header", Toast.LENGTH_SHORT).show();
}
}
return newFixedLengthResponse(msg + "");
}
private Server() throws IOException {
super(8080);
}
public static Server getServer() throws IOException{
if(server == null){
server = new Server();
}
return server;
}
}
У меня есть один одноэлементный класс со статическим контекстом, поэтому я могу гарантировать, что контекст из приведенного выше кода не равен нулю.
Проблема в том, что когда я комментирую строку Toast, как указано выше, все работает как обычно. Браузер пользователя показывает выходные данные метода Response. Но когда я использовал Toast, это было похоже на то, что Android не отправляет данные в браузер, поэтому браузер не отображает правильный вывод.
Изменить
Вот мой журнал:
02-14 12:31:54.574 25609-26777/com E/NanoHTTPD: Communication with the client broken, or an bug in the handler code java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
at android.os.Handler.(Handler.java:200)
at android.os.Handler.(Handler.java:114)
at android.widget.Toast$TN$3.(Toast.java:350)
at android.widget.Toast$TN.(Toast.java:350)
at android.widget.Toast.(Toast.java:107)
at android.widget.Toast.makeText(Toast.java:263)
at Server.serve(Server.java:34) at NanoHTTPD.NanoHTTPD$1.handle(NanoHTTPD.java:376)
at NanoHTTPD.NanoHTTPD$1.handle(NanoHTTPD.java:372)
at NanoHTTPD.NanoHTTPD.handle(NanoHTTPD.java:535)
at NanoHTTPD.HTTPSession.execute(HTTPSession.java:421)
at NanoHTTPD.ClientHandler.run(ClientHandler.java:75)
at java.lang.Thread.run(Thread.java:761)
02-14 12:32:04.882 25609-26932/com E/NanoHTTPD: Communication with the client broken, or an bug in the handler code java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
at android.os.Handler.(Handler.java:200)
at android.os.Handler.(Handler.java:114)
at android.widget.Toast$TN$3.(Toast.java:350)
at android.widget.Toast$TN.(Toast.java:350)
at android.widget.Toast.(Toast.java:107)
at android.widget.Toast.makeText(Toast.java:263) at Server.serve(Server.java:34)
at NanoHTTPD.NanoHTTPD$1.handle(NanoHTTPD.java:376)
at NanoHTTPD.NanoHTTPD$1.handle(NanoHTTPD.java:372)
at NanoHTTPD.NanoHTTPD.handle(NanoHTTPD.java:535)
at NanoHTTPD.HTTPSession.execute(HTTPSession.java:421)
at NanoHTTPD.ClientHandler.run(ClientHandler.java:75)
at java.lang.Thread.run(Thread.java:761)
Подробнее здесь: [url]https://stackoverflow.com/questions/48779953/show-toast-on-method-response-nanohttpd[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия