<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          NanoHTTPD嵌入式HTTP服務(wù)器

          聯(lián)合創(chuàng)作 · 2023-10-01 13:38

          NanoHTTPD是一個(gè)免費(fèi)、輕量級(jí)的(只有一個(gè)Java文件) HTTP服務(wù)器,可以很好地嵌入到Java程序中。支持 GET, POST, PUT, HEAD 和 DELETE 請(qǐng)求,支持文件上傳,占用內(nèi)存很小??奢p松定制臨時(shí)文件使用和線程模型。

          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>");
              }
          }
          瀏覽 28
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          編輯 分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          編輯 分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  看毛片网址 | 亚洲蜜桃一区 | 人人操人人干人人 | 黄色永久免费 | 爱爱综合网站 |