Android开发记录(5)-AndServer,android端的Web服务器使用

这次应老板要求实现在设备端搭建一个webserver,供内网直接使用实现需要的业务逻辑。绝了!身为android应用开发竟然需要了解web服务器。在这之前先尝试了i-jetty,但还是不太利于android端的开发,所以于是有了这篇给大家介绍使用一个强大的Android端的Web服务器。

先说下应用场景

按照国际惯例,肯定要举个栗子!如同前言所说,其实这个web服务器的应用场景非常广而且方便。
1.如果企业内多台android设备需要一些系统配置,那么就需要管理员一一跑到设备前打开设置>填写参数>吧嗒吧嗒吧嗒....(繁琐)。那么如果每台设备提供这样一个可以远程操作直接配置的web界面呢!!
2.如果希望做一个单机版业务(场景较小,又不想要购置服务器),供内网直接使用操作。想象android设备就是个服务器,还可以直接办公pc登录web进行各种业务操作,体验就很好!!

是不是简单的两个例子,就能感受到好处了,其他什么局域网内下载上传的就先不说了!

快速入门使用

这里先给上AndServer开源项目,以及作者的详细介绍AndServer,一个Android端的web服务器,感谢作者的无私分享~~这里参考AndServer开发文档更有帮助

1.Sample

开源项目内自带了一实现用户登录的例子,通过表单请求服务器验证用户和密码返回结果。
结合开发手册可直接清晰明地了解其中的使用方法。


Android开发记录(5)-AndServer,android端的Web服务器使用_第1张图片
Sample.gif

这里设备端也就是服务器的ip地址是192.168.1.48,应用端口默认8080。

2.基于Sample修改的房间展板案例

需求场景:在Android房间展板屏上搭建一个AndServer
1.自定义web端界面(当然是要拜托前端同事)
2.web端支持获取展板状态,和展板名称等属性
3.web端支持修改展板名称等属性
简单这实现三点,不过这三点也差不多能符合大部分情况了。

数据库

数据库当然是必须的,这里使用的是GreenDao,关于android的GreenDao可自行查阅。
build后的实体类如下:

import org.greenrobot.greendao.annotation.Entity;
import org.greenrobot.greendao.annotation.Generated;
import org.greenrobot.greendao.annotation.Id;

@Entity
public class DaoRoom {
    @Id(autoincrement = true)
    private Long id;
    //房间名称
    private String roomName;
    //容纳人数
    private Integer number;
    //房间设备
    private String equipment;
    @Generated(hash = 800482737)
    public DaoRoom(Long id, String roomName, Integer number, String equipment) {
        this.id = id;
        this.roomName = roomName;
        this.number = number;
        this.equipment = equipment;
    }
    @Generated(hash = 332995214)
    public DaoRoom() {
    }
    public String getRoomName() {
        return this.roomName;
    }
    public void setRoomName(String roomName) {
        this.roomName = roomName;
    }
    public Integer getNumber() {
        return this.number;
    }
    public void setNumber(Integer number) {
        this.number = number;
    }
    public String getEquipment() {
        return this.equipment;
    }
    public void setEquipment(String equipment) {
        this.equipment = equipment;
    }
    public Long getId() {
        return this.id;
    }
    public void setId(Long id) {
        this.id = id;
    }
}

提供web端http api接口

这里就要介绍到AndServer的好用之处了,RequestMapping。
它可以规定一个Http Api请求路径、请求方法、参数校验、请求头校验、Accept、ContentType等重要规则。
代码如下:

import com.yanzhenjie.andserver.annotation.GetMapping;
import com.yanzhenjie.andserver.annotation.PathVariable;
import com.yanzhenjie.andserver.annotation.PostMapping;
import com.yanzhenjie.andserver.annotation.RequestBody;
import com.yanzhenjie.andserver.annotation.RequestMapping;
import com.yanzhenjie.andserver.annotation.RestController;
import com.yanzhenjie.andserver.http.HttpRequest;
import com.yanzhenjie.andserver.http.HttpResponse;
import com.yanzhenjie.andserver.sample.greendao.DaoUtil;
import com.yanzhenjie.andserver.sample.model.ResponseBean;
import com.yanzhenjie.andserver.sample.util.JsonUtils;
import com.yanzhenjie.andserver.sample.util.Logger;
import com.yanzhenjie.andserver.util.MediaType;

@RestController
@RequestMapping(path = "/room")
public class RoomController {

    /**
     * 查询房间信息
     * @return
     */
    @GetMapping(path = "/info")
    ResponseBean info() {
        return DaoUtil.getRoomInfo();
    }
    /**
     * 更新房间信息
     * @param request
     * @param response
     * @param jsonStr
     * @return
     */
    @PostMapping(path = "/update",produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
    ResponseBean booking(HttpRequest request, HttpResponse response, @RequestBody String jsonStr){
        Logger.i("Body:"+JsonUtils.toJsonString(request.getBody()));
        return DaoUtil.updateRoomInfo(jsonStr);
    }
}

类上可直接添加@RequestMapping(path = "/room")简化。路径依次为/room/info和/room/update,json通信,主要提供了GET房间属性和POST更新房间属性两条。路径
这里的ResponseBean类和DaoUtil数据库操作工具可自行封装修改。

当然要验证接口了。这里因为只实现个单页面demo,所以没有对PageController做修改。

替换我们的Website

AndServer提供了AssetsWebsite、StorageWebsite、FileBrowser,从名称也能看出来,StorageWebsite需要指定web原文件在设备中的存储路径,好处是可以方便更换。这里应场景使用的AssetsWebsite,可直接原文件替换sample内的assets文件。
如图所示:


Android开发记录(5)-AndServer,android端的Web服务器使用_第2张图片
目录.png
结果
Android开发记录(5)-AndServer,android端的Web服务器使用_第3张图片
结果.gif

流程很简单,但是这个思路已经可以做很多事情了!

你可能感兴趣的:(Android开发记录(5)-AndServer,android端的Web服务器使用)