diff --git a/app/src/main/java/monkeylord/XServer/XServer.java b/app/src/main/java/monkeylord/XServer/XServer.java index 88aae6b..3ff8152 100644 --- a/app/src/main/java/monkeylord/XServer/XServer.java +++ b/app/src/main/java/monkeylord/XServer/XServer.java @@ -2,6 +2,7 @@ import android.os.Process; +import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.StringWriter; @@ -22,6 +23,7 @@ import monkeylord.XServer.api.wsTracerNew; import monkeylord.XServer.handler.ObjectHandler; import monkeylord.XServer.objectparser.ByteArrayParser; +import monkeylord.XServer.objectparser.GenericParser; import monkeylord.XServer.objectparser.IntParser; import monkeylord.XServer.objectparser.StoredObjectParser; import monkeylord.XServer.objectparser.StringParser; @@ -40,7 +42,8 @@ public XServer(int port) { public XServer(int port, Hashtable route) { super(port); //注册对象序列化/反序列化处理器 - parsers.put("general", new StoredObjectParser()); + parsers.put("store", new StoredObjectParser()); + parsers.put("generic", new GenericParser()); parsers.put("string", new StringParser()); parsers.put("int", new IntParser()); parsers.put("Ljava.lang.Integer;", new IntParser()); @@ -92,7 +95,12 @@ public Response serveHttp(IHTTPSession session) { String uri = session.getUri(); //处理路由 Operation operation = route.get(uri.toLowerCase()); - if (operation == null) operation = route.get("/"); + if (operation == null)try{ + XposedEntry.res.getAssets().open(uri.substring(1)); + operation = new assets(); + }catch (IOException e){ + operation = route.get("/"); + } return newFixedLengthResponse(operation.handle(uri, session.getParms(), headers, files)); } //供动态注册路由使用 @@ -110,6 +118,15 @@ public static String render(Map model, String page) throws IOExc tmp.process(model, sw); return sw.toString(); } + public static String file(String page) throws IOException, TemplateException { + InputStreamReader reader = new InputStreamReader(XposedEntry.res.getAssets().open(page)); + int ch; + StringWriter sw = new StringWriter(); + while ((ch = reader.read())!=-1){ + sw.write(ch); + } + return sw.toString(); + } //定义序列化/反序列化器 public interface ObjectParser { @@ -143,4 +160,16 @@ public String handle(String url, Map parms, Map } } } + // 资源文件 + public class assets implements XServer.Operation { + @Override + public String handle(String url, Map parms, Map headers, Map files) { + try { + Map map = new HashMap(); + return file(url.substring(1)); + } catch (Exception e) { + return e.getLocalizedMessage(); + } + } + } } \ No newline at end of file