Giter Site home page Giter Site logo

fnetserver's Introduction

框架功能及使用

1. 框架功能介绍

这是根据NanoHttpd二次开发的一个轻量级,使用简单,功能比较强大的一个http服务框架.

可以实现:

  1. 支持get请求

  2. 支持post请求

  3. 支持文件上传

  4. 支持文件下载

  5. 支持自定义端口号

  6. 支持自定义静态资源目录(默认assets的根目录,也可以指定sd卡的自定义目录)

  7. 支持静态资源文件过滤(由于指定的是assets根目录,会有很多系统自带的xml文件,就做了这个)

  8. 支持注解的使用(这框架不用注解还真没法用)

  9. 支持以对象来响应

  10. 支持请求以对象接收

  11. ...

基本满足http服务的正常使用需求(硬是瞎编了那么多功能...)

2.框架里的几个注解

注解 含义
@RequestBody 方法里的属性注解,使用该注解可指定以对象返回 主要用于处理json请求
@RequestParam("") 方法里的属性注解,使用该注解可指定param值返回 主要用于处理get,post的请求
@RequestMapping("") 方法注解, 使用该注解是映射url ,把url 指定到对应的方法中处理数据
@ResponseBody 方法注解,使用该方法可以对象返回经过处理吐出json数据返回给客户端

以上注解的使用可看前面的图片

3. 框架使用

  1. gradle添加
compile 'cn.hotapk:fhttpserver:0.4.0'
  1. manifest添加权限
  <uses-permission android:name="android.permission.INTERNET" />
  <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
  1. 初始化
fHttpManager = FHttpManager.init(this, UserController.class);
fHttpManager.setPort(9999);
...

UserController.class 是进行url映射的类, 可添加多个这样的类

public class UserController {

    @RequestMapping("userls")
    public NanoHTTPD.Response getUserLs() {
        return setResponse("user列表");
    }

    @ResponseBody
    @RequestMapping("getuser")
    public UserBean getUser() {
        return new UserBean("admin", "admin");
    }
...
  1. 开启http服务
fHttpManager.startServer();
  1. 文件下载
   NanoHTTPD.Response response = NanoHTTPD.newChunkedResponse(NanoHTTPD.Response.Status.OK, "application/octet-stream", inputStream);//这代表任意的二进制数据传输。

   response.addHeader("Accept-Ranges", "bytes");

   response.addHeader("Content-Disposition", "attachment; filename="+"test.java")//可以这里返回文件名称

  1. 文件上传
   /**
       * 文件上传
       *
       * @param session
       * @param fileDir 保存文件的目录
       * @param parm    上传文件的参数
       * @return
       */
      public static boolean uploadFile(NanoHTTPD.IHTTPSession session, String fileDir, String parm) {
          Map<String, String> files = new HashMap<>();
          try {
              session.parseBody(files);
              Map<String, String> parms = session.getParms();
              return FFileUtils.copyFileTo(files.get(parm), fileDir + "/" + parms.get(parm));
          } catch (IOException e) {
              e.printStackTrace();
          } catch (NanoHTTPD.ResponseException e) {
              e.printStackTrace();
          }
          return false;
      }

  1. index.html 文件冲突

该框架默认打开index.html文件,如果不希望用这文件名可如下修改

fHttpManager.setIndexName(" ")

4. 框架使用demo

这块就不出详细demo了

可以到我另外一个项目查看

这是一个android调试数据库的神器

5.框架代码讲解

这方面就不讲了,主要使用注解反射实现,其它也没什么的了

6.框架名称

FHttpServer

以上是FHttpServer框架的全部内容,谢谢观看,欢迎使用.

同时希望各位在使用中遇到什么问题或建议可以用以下联系方式进行反馈

android开发讨论群 320120776

个人博客

简书地址 (感兴趣的话,不妨点赞支持下)

fnetserver's People

Contributors

570622566 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

fnetserver's Issues

关于使用该框架来让Android设备作为Server接收文件的问题?

public class WeChatController {
    public static final String OK = "上传成功";
    @ResponseBody
    @RequestMapping("upload")
    public NanoHTTPD.Response upload(NanoHTTPD.IHTTPSession session) {
        FFileUploadUtils.uploadFile(session, FFileUtils.getRootDir(), "file");
        return NanoHTTPDUtil.setResponse(NanoHTTPD.Response.Status.OK, OK);
    }
}

Application里面:

    /**
     * 启动HttpServer
     */
    private fun initFHttpManager() {
        fHttpManager = FHttpManager.init(this, WeChatController::class.java)
                .setPort(9999)
                .setAllowCross(true)
                .startServer()
    }

如上代码来让Android设备作为Server接收文件,但是我用postman测试上传无法ok,不知道有什么特殊的写法或者配置?
image

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.