Andserver加载静态网站

最近公司有一个项目需求,需要在android设备上运行一个小型的web服务器,经过查找资料,最后选定andserver作为项目框架,成功实现了相关功能

提醒:如果你不能看懂框架的代码和意思,那你会变的一头雾水,无从下手,我的建议是首先手打代码,然后理解代码逻辑,通信的本质在于注解 

1.添加依赖

build.gradle

    //AndServer
    implementation 'com.yanzhenjie.andserver:api:2.0.5'
    annotationProcessor 'com.yanzhenjie.andserver:processor:2.0.5'
    implementation 'com.yanzhenjie:loading:1.0.0'

    implementation group: 'com.alibaba', name: 'fastjson', version: '1.1.70.android'
    implementation 'org.apache.commons:commons-lang3:3.8'
    implementation 'com.google.android.material:material:1.0.0'
    implementation 'com.google.code.gson:gson:2.8.0'

2.添加权限,启动服务

AndroidManifest

    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

3.启动服务,配置ip和端口号,设置超时time,并且有三个回调方法,监听服务启动情况

CoreService
   @Override
    public void onCreate() {
        super.onCreate();
        mServer = AndServer.serverBuilder(this)
                .inetAddress(NetUtils.getLocalIPAddress())
                .port(8080)
                .timeout(10, TimeUnit.SECONDS)
                .listener(new Server.ServerListener() {
                    @Override
                    public void onStarted() {
                        String hostAddress = mServer.getInetAddress().getHostAddress();
                        ServerManager.onServerStart(CoreService.this, hostAddress);
                    }

                    @Override
                    public void onStopped() {
                        ServerManager.onServerStop(CoreService.this);
                    }

                    @Override
                    public void onException(Exception e) {
                        ServerManager.onServerError(CoreService.this, e.getMessage());
                    }
                })
                .build();
    }

4.接下来重点讲一下注解,前面的都是写ui布局,然后开启服务,这些代码网上一大堆,你们可以自己寻找,我讲一下注解,andserver中网页端称之为前端,android端称之为后端,后端的接收方法是LoggerInterceptor文件,重写onIntercept,有三个值,path表示路径 method表示请求方式 valueMap表示请求体的内容,这个请求体是前端发送给后端,后端进行接收的方法

LoggerInterceptor
@Interceptor
public class LoggerInterceptor implements HandlerInterceptor {

    @Override
    public boolean onIntercept(@NonNull HttpRequest request, @NonNull HttpResponse response, @NonNull RequestHandler handler) throws Exception {
        String path = request.getPath();
        HttpMethod method = request.getMethod();
        MultiValueMap<String,String> valueMap=request.getParameter();
        //path表示 网页端请求路径,这个路径需要跟服务端一一对应
        // method表示请求的方式
        //params表示网页端向服务端请求的内容
        //这三个字段务必不能为空,如果为空 表示网页端与服务端 通信不成功
        //搞不懂  这个地方他做了封装处理  反正就是能接收到  网页端发送过来的各种消息
        Log.e("TAG","LoggerInterceptor=path:"+path);
        Log.e("TAG","LoggerInterceptor=method:"+method.value());
        Log.e("TAG","LoggerInterceptor=param:"+ JsonUtils.toJsonString(valueM
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值