当前位置: 首页 > 软件库 > 服务器软件 > HTTP服务器 >

NanoHTTPD

嵌入式HTTP服务器
授权协议 BSD
开发语言 Java
所属分类 服务器软件、 HTTP服务器
软件类型 开源软件
地区 不详
投 递 者 宗政洋
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

NanoHTTPD是一个免费、轻量级的(只有一个Java文件) HTTP服务器,可以很好地嵌入到Java程序中。支持 GET, POST, PUT, HEAD 和 DELETE 请求,支持文件上传,占用内存很小。可轻松定制临时文件使用和线程模型。

NanoHTTPD for JDK 1.1
https://github.com/NanoHttpd/nanohttpd/tree/nanohttpd-for-java1.1

示例代码:

package fi.iki.elonen.debug;
 
import fi.iki.elonen.NanoHTTPD;
import fi.iki.elonen.ServerRunner;
 
import java.util.HashMap;
import java.util.List;
import java.util.Map;
 
public class DebugServer extends NanoHTTPD {
    public DebugServer() {
        super(8080);
    }
 
    public static void main(String[] args) {
        ServerRunner.run(DebugServer.class);
    }
 
    @Override public Response serve(IHTTPSession session) {
        Map<String, List<String>> decodedQueryParameters =
            decodeParameters(session.getQueryParameterString());
 
        StringBuilder sb = new StringBuilder();
        sb.append("<html>");
        sb.append("<head><title>Debug Server</title></head>");
        sb.append("<body>");
        sb.append("<h1>Debug Server</h1>");
 
        sb.append("<p><blockquote><b>URI</b> = ").append(
            String.valueOf(session.getUri())).append("<br />");
 
        sb.append("<b>Method</b> = ").append(
            String.valueOf(session.getMethod())).append("</blockquote></p>");
 
        sb.append("<h3>Headers</h3><p><blockquote>").
            append(toString(session.getHeaders())).append("</blockquote></p>");
 
        sb.append("<h3>Parms</h3><p><blockquote>").
            append(toString(session.getParms())).append("</blockquote></p>");
 
        sb.append("<h3>Parms (multi values?)</h3><p><blockquote>").
            append(toString(decodedQueryParameters)).append("</blockquote></p>");
 
        try {
            Map<String, String> files = new HashMap<String, String>();
            session.parseBody(files);
            sb.append("<h3>Files</h3><p><blockquote>").
                append(toString(files)).append("</blockquote></p>");
        } catch (Exception e) {
            e.printStackTrace();
        }
 
        sb.append("</body>");
        sb.append("</html>");
        return new Response(sb.toString());
    }
 
    private String toString(Map<String, ? extends Object> map) {
        if (map.size() == 0) {
            return "";
        }
        return unsortedList(map);
    }
 
    private String unsortedList(Map<String, ? extends Object> map) {
        StringBuilder sb = new StringBuilder();
        sb.append("<ul>");
        for (Map.Entry entry : map.entrySet()) {
            listItem(sb, entry);
        }
        sb.append("</ul>");
        return sb.toString();
    }
 
    private void listItem(StringBuilder sb, Map.Entry entry) {
        sb.append("<li><code><b>").append(entry.getKey()).
            append("</b> = ").append(entry.getValue()).append("</code></li>");
    }
}
  • NanoHTTPD是一个可以把移动端当成一个轻量级服务器的框架 使用也比较简单,在github搜索NanoHTTPD,添加依赖jar包即可(这里用的是2.3.2版本的) 接收get方法传过来的数据比较简单,网上搜一下很多 这里要说的是怎么接收post传过来的json数据?网上搜了一下也有很多,但是有很多坑 我实现的接收方法: if (method.equals(Method.POST)){

  • NanoHTTPD是一轻型服务器,可以再Android手机中构建一web服务器。NanoHTTPD是一个开源的项目,下面我们对其流程进行分析: public NanoHTTPD( int port, File wwwroot ) throws IOException { myTcpPort = port; this.myRootDir = wwwroot; myServerSock

  • public abstract class NanoHTTPD { private final static String charset = "UTF-8"; private final static String defContentHeaderCharset = charset; private final static String responseCharset = charset; p

  • NanoHTTPD是一个轻量级的HTTP服务器,可以很方便地嵌入到Java程序中。所以在android平台上有广泛的使用。 NanoHTTPD默认是不支持访问跨域(CORS)请求的。如果希望自己的NanoHTTPD服务支持CORS,就要自己实现对CORS请求的响应。 关于什么是CORS,这个文档有非常详细、清晰、全面的阐述: 《HTTP访问控制(CORS)》,如果还不太清楚CORS机制的童鞋,建议

  • 我使用的技术栈是:react-native(0.56.0)+ react-navigation + react-redux + ant-design + axios 我在做的ReactNative项目需要实现同一WIFI下跨平台互传文件功能,涉及原生模块的功能 我实现这两个功能使用的库有 @react-native-community/netinfo NanoHTTPD 首先需要明白限制条件是在同

  • android 特殊手机终端创建一个服务器 对外公开地址(生成一个二维码的地址) 扫码识别点开为一个web 页面,可以下载本地的相关资源 或者播放本地的资源 使用NanoHttpd在Android项目中搭建服务器 android 服务器播放视频 其实都大同小异 也可以这种搭建服务器 AndServer,一个Android端的web服务器 这种比较繁琐 我的包直接用的 [android 服务器播放视

  • NanoHttpd是一个开源库,使用Java实现,可以在非常方便地集成到Android应用中去,实现了一个轻量级的 Web Server。 项目地址: https://github.com/NanoHttpd/nanohttpd 使用方法:在下面下载链接中下载nanohttpd-2.2.0.jar导入到Android项目中的libs目录下。 https://github.com/NanoHttpd

 相关资料
  • 每个Spring Boot Web应用程序都包含一个嵌入式Web服务器。 此功能会导致许多操作方法问题,包括如何更改嵌入式服务器以及如何配置嵌入式服务器。 本节回答了这些问题。 9.3.1 使用其他Web服务器 许多Spring Boot启动器都包含默认的嵌入式容器。 对于servlet堆栈应用程序,spring-boot-starter-web包括tomcat,包括spring-boot-sta

  • 问题内容: 我希望在我的Java Swing应用程序中嵌入一个非常轻便的HTTP服务器,该服务器仅接受请求,执行一些操作并返回结果。 我可以在应用程序中使用一个非常轻便的Java类,该类在指定端口上侦听HTTP请求并让我处理请求吗? 请注意,我并不是在寻找独立的HTTP服务器,而只是在应用程序中可以使用的一个小型Java类。 问题答案: 从Java 6开始,JDK包含一个简单的HTTP服务器实现。

  • neo4j数据库应在哪种模式下使用嵌入式或rest服务器? 我主要关注的是: > 性能 水平扩展(HA,集群)-因为应用程序非常大,所以非常重要。 事务支持(在SDN、Grails插件、结构等框架中) 部署服务器支持,如amazon、GrapheneDB等。 易于从一个切换到另一个 缩放(数据库大小)

  • 25.1.1. 嵌入式MySQL服务器库概述 25.1.2. 使用libmysqld编译程序 25.1.3. 使用嵌入式MySQL服务器时的限制 25.1.4. 与嵌入式服务器一起使用的选项 25.1.5. 嵌入式服务器中尚需完成的事项(TODO) 25.1.6. 嵌入式服务器示例 25.1.7. 嵌入式服务器的许可 25.1.1. 嵌入式MySQL服务器库概述 使用嵌入式MySQL服务器库,能够

  • 我试图在HA模式下使用带有spring数据的neo4j嵌入式服务器。我得到类加载错误。我把所有的罐子都放好了。我试图在HA模式下使用带有spring数据的neo4j嵌入式服务器。我得到类加载错误。我把所有的罐子都放好了。

  • 问题内容: 澄清: 这个问题是关于对基于JAX-WS的REST服务进行GZIP处理,但是我决定更改主题以使其更容易找到 我正在通过JAX-WS实现REST服务,并以标准方式发布它(原因是我想避免使用servlet容器或应用程序服务器)。 有办法让服务器gzip响应内容吗? 如何 实际提供的示例可以正常工作,它使您可以在没有servlet容器的嵌入式轻量级服务器上构建JAX-RS样式的服务器,但是需