https://yanzhenjie.com/AndServer/
AndServer是Android平台的Web Server和Web Framework。 它基于编译时注解提供了类似SpringMVC的注解和功能,如果您熟悉SpringMVC,则可以非常快速地掌握它。
AndServer是国人yanzhenjie开发部署在手机上的服务器框架
相关博客 https://blog.csdn.net/yanzhenjie1003
个人感觉用手机做服务器比较low,一般都是用web做服务端,但难免会出现些特殊情况所以有这种框架还是挺方便便捷的,直接交代码吧
首先在安卓gradle里引入依赖包
dependencies {
implementation 'com.yanzhenjie.andserver:api:{version}'
annotationProcessor 'com.yanzhenjie.andserver:processor:{version}'
}
如果版本更新就看官方文档里的依赖 我写这篇博客时上面这个依赖是最新的
如果你会spring的话那么AndServer所谓开箱即用
下面我贴上接口代码
这是我做的一个接口代码
@RestController
public class UserController {
@RequestMapping("/wlogin")
public String login(@RequestParam("name") String name, @RequestParam("psw") String psw, HttpRequest request) { //登陆接口
List<Users> usersList = Users.find(Users.class, "name = ? AND password = ?",
name, psw);
if (!usersList.isEmpty()){
String callbackFuncation = request.getParameter("callback");
return callbackFuncation+"(1)"; //登录成功
}
else{
String callbackFuncation = request.getParameter("callback");
return callbackFuncation+"(0)"; //登录失败
}
}
}
如果是传输list数据就用需要用到alibaba的fastJSON来做数据传输
@RequestMapping("/getUser")
public String getUser(@RequestParam("name") String name, @RequestParam("psw") String psw, HttpRequest request)//获取个人用户信息
{
List<Users> usersList = Users.find(Users.class, "name = ? AND password = ?",
name, psw);
if (!usersList.isEmpty()){
String callbackFuncation = request.getParameter("callback");
// return callbackFuncation+"({'name':'"+usersList.get(0).getName()+",'birth':"+usersList.get(0).getBirth()+",'sex':"+usersList.get(0).getSex()+",'phone':"+usersList.get(0).getPhone()+"})"; //获取成功
return callbackFuncation+"("+JSON.toJSON(usersList.get(0))+")";
}
else{
String callbackFuncation = request.getParameter("callback");
return callbackFuncation+"(0)"; ///获取失败
}
}
这里我把依赖贴进来
implementation 'com.alibaba:fastjson:1.1.70.android' //引入阿里巴巴的fastjson库
implementation 'com.alibaba:fastjson:1.2.55'
弄好了之后安卓这边就算差不多了接下来我们看web 这边使用ajax请求到安卓端的数据
function Userlogin(){
var name=$('#exampleInputEmail1');
var psw=$('#exampleInputPassword1');
$.ajax({
url:"http://10.22.12.1:8080/wlogin",
type:"get",
dataType:"jsonp",
jsonp:"callback",
jsonpCallback: 'handleResponse', //设置回调函数名
timeout: 5000,
data:{
"name":name.val(),
"psw":psw.val()
},
success:function(result){
if(result=="1"){
alert("登录成功");
localStorage.setItem('name',name.val());//存储key为name的数据data
localStorage.setItem('psw',psw.val());//存储key为name的数据data
window.location.href="main.html";
}else{
alert("密码错误");
}
},
error:function(result){
// var jsonData = JSON.stringify(result);// 转成JSON格式
alert("服务器未开启");
}
});
}
</script>
因为使用到跨域所以不用json 传输 使用的是jsonp来传输数据
还有其他关于跨域的我就暂时没写了可以自行百度
关于web和android传输数据的那个表头callback最好是要一致的不过我这里是用安卓使用了get到了再赋值给String
最后
在安卓端设置一个服务器用java获取到本机服务器地址
然后在url上面换成自己的地址就可以了
ServerManager.startServer()
NetWorkUtil.getHostIp()
使用getHostIp显示出服务器地址就可以看到了
开启服务器就OK啦
源码地址等会会贴出来