Показать всплывающее сообщение о методе Response NanoHTTPDAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Показать всплывающее сообщение о методе Response NanoHTTPD

Сообщение 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)


Подробнее здесь: https://stackoverflow.com/questions/487 ... -nanohttpd
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»