Я пытаюсь поймать в приложении Android приложение, отправленное с запросом http. Tanks to nanohttpd, следующий код работает правильно, и я получаю Hello Word в ответ, но теперь я не знаю, как выполнять действие в моей службе Android каждый раз, когда принимается html-запрос (например, сделать простой Toast или что-нибудь еще ...). Как связать класс NanoHTTPD с моим классом обслуживания?Служба Nanohttpd и Android
Мой код:
public class WebServer extends NanoHTTPD {
/**
* Constructs an HTTP server on given port.
*/
public WebServer()throws IOException {
super(8080);
}
@Override
public Response serve(String uri, Method method,
Map<String, String> header, Map<String, String> parms,
Map<String, String> files)
{
System.out.println(method + " '222" + uri + "' ");
String msg = "<html><body><h1>Hello server</h1>\n";
msg += "</body></html>\n";
//Toast.makeText(this, "http message received", Toast.LENGTH_LONG).show();
return new NanoHTTPD.Response(msg);
}
}
Вот по Android услуг:
package com.example.domomaster;
import java.io.IOException;
import android.app.Service;
import android.content.Intent;
import android.os.IBinder;
import android.widget.Toast;
public class WebService extends Service {
private final static String TAG = "WebService";
WebServer webServer;
@Override
public IBinder onBind(Intent intent) {
Toast.makeText(this, "service bind", Toast.LENGTH_LONG).show();
return null;
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
//Toast.makeText(this, "service starting", Toast.LENGTH_LONG).show();
try
{
webServer = new WebServer();
webServer.start();
}
catch(IOException ioe)
{
System.err.println("Couldn't start server:\n" + ioe);
System.exit(-1);
}
Toast.makeText(this, "service Listening on port 8080", Toast.LENGTH_LONG).show();
System.out.println("Listening on port 8080. Hit Enter to stop.\n");
try { System.in.read(); } catch(Throwable t) {
System.out.println("read error");
};
return super.onStartCommand(intent,flags,startId);
}
@Override
public void onDestroy() {
super.onDestroy();
Toast.makeText(this, "service destroyed", Toast.LENGTH_LONG).show();
}
}
Возможно, вам нужно сохранить ссылку на свой 'WebService' в' WebServer'. –
Я знаю, что это старый, но ваш код прав. Что-то не так, чтобы настроить службу? Вы использовали где-то 'startService' (я предполагаю, что вы не опубликовали ВСЕ ваш код)? – KVISH
просто сохраните контекст службы и используйте его в классе WebServer. проверить https://github.com/pathikdevani/Flysync/blob/master/flysync-android/flysync/src/main/java/com/pathik/service/MyService.java –