【问题标题】:NanoHTTP server update responseNanoHTTP 服务器更新响应
【发布时间】:2017-07-01 23:04:55
【问题描述】:

我尝试使用 nanoHTTP 从我的 android 应用程序运行服务器。我的目标是让与应用连接到同一网络的每个人都可以访问 html 网页。

到目前为止,这是我的 NanoHttp-server-class:

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);
    }

在我从主activityn启动服务器后,当我在浏览器中打开ip:port时,我可以看到文本“Hello server”

现在我的问题是,如何从主要活动中更改 html 代码。 我想过通过 IHTTPSession session 将 html 代码传递给 serve() 方法,但我不知道该怎么做以及 session 的哪个参数.

所以我的问题是,如何更新我的 nanoHTTP 服务器的响应,或者如何从主活动中调用 serve() 方法?

【问题讨论】:

    标签: android http server nanohttpd


    【解决方案1】:

    您无法从活动中手动调用 serve() 方法。

    serve() 方法将在客户端请求到来时执行。 您可以实现的一种方法是,创建一个接受 MyHTTPD 中的字符串数据的参数化构造函数,并使用此构造函数创建对象。在创建对象时传递 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);
        }
    

    【讨论】:

    • 好的,我找到了解决方案。我创建了一个方法来更改 String htmlData 并在每次 html 更改时调用它。您的建议帮助我找到了解决方案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多