2017-02-13 7 views
0

nanoHTTP로 안드로이드 앱에서 서버를 실행하려고합니다. 내 목표는 앱과 동일한 네트워크에 연결된 모든 사람들이 HTML 웹 페이지에 액세스 할 수 있다는 것입니다.NanoHTTP 서버 업데이트 응답

는 지금까지 내 NanoHttp - 서버 클래스 : I 메인 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 코드를 변경할 수 있습니다. 나는 에 HTML 코드를 통과 생각 는 IHTTPSession 세션을 통해() 방법을 제공,하지만 할 방법 아니오 그리고 세션 어떤 매개 변수가 없습니다.

제 질문은 nanoHTTP 서버의 응답을 어떻게 업데이트 할 수 있습니까? serve() 방법은 주 활동에서 호출 할 수 있습니까?

답변

0

활동에서 serve() 메소드를 수동으로 호출 할 수 없습니다.

클라이언트 요청이 발생할 때마다 serve() 메소드가 실행됩니다. 당신이 달성 할 수있는 한가지 방법은, MyHTTPD에서 String 데이터를 받아들이고이 생성자로 객체를 생성하는 매개 변수화 된 생성자 하나를 생성하는 것입니다. 객체를 생성하는 동안 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