2017-02-13 10 views
0

nanoHTTPを使用してAndroidアプリケーションからサーバーを実行しようとしています。私の目標は、アプリケーションと同じネットワークに接続しているすべての人がhtmlウェブページにアクセスできることです。NanoHTTPサーバー更新の応答

これまでのところ、これは私のNanoHttp-サーバークラスである:私はメインactivitynからサーバーを起動する

private class MyHTTPD extends NanoHTTPD { 

public MyHTTPD() throws IOException { 
    super(8080); 
} 

@Override 
    public Response serve(IHTTPSession session) { 
     String msg = "<html><body><h1>Hello server</h1></body></html>\n"; 
     return newFixedLengthResponse(msg); 
    } 

た後、私はIPを開いたとき、私は、テキスト「もしもしサーバ」を見ることができます:ポートをブラウザにインストールします。

私の質問は、どのようにhtmlコードをメインアクティビティから変更できるかです。 私はIHTTPSessionセッションを通じて方法)(サーブにhtmlコードを渡すことを考えたが、私はそれを行う方法はありませんし、どのセッションのパラメータではありません。

私のnanoHTTPサーバーの応答を更新するにはどうすればいいですか?serve()メソッドは主なアクティビティから呼び出すことができますか?

答えて

0

アクティビティからserve()メソッドを手動で呼び出すことはできません。

serve()メソッドは、クライアントリクエストが来るたびに実行されます。 あなたが達成できる1つの方法は、MyHTTPDでStringデータを受け取り、このコンストラクタでオブジェクトを作成するパラメータ化されたコンストラクタを1つ作成します。オブジェクトの作成中にHTMLデータを渡します。今すぐすべてのリクエストでそのデータを提供してください。

例:

private class MyHTTPD extends NanoHTTPD { 

private String htmlData; 

public MyHTTPD() throws IOException { 
    super(8080); 
} 

public MyHTTPD(String data) throws IOException { 
    this(); 
    htmlData = data; 

} 

@Override 
    public Response serve(IHTTPSession session) { 
     // String msg = "<html><body><h1>Hello server</h1></body></html>\n"; 
     return newFixedLengthResponse(htmlData); 
    } 
+0

オーケー、私は解決策を見つけました。 String htmlDataを変更し、htmlが変更されるたびにそのメソッドを呼び出すメソッドを作成します。あなたの提案は、私が解決策を見つけるのを助けました。 – Luis

関連する問題