Open fengfeilong0529 opened 5 years ago
https://blog.csdn.net/yanzhenjie1003/article/details/64090436
implementation 'com.yanzhenjie:andserver:1.1.4'
public class HttpServer { private static final String TAG = "HttpServer"; private static final String URL_ADD_CARD = "/addCard"; private static final String URL_DELETE_CARD = "/deleteCard"; private Server server; private static final class Holder { private static final HttpServer INSTANCE = new HttpServer(); } public static HttpServer getInstance() { return HttpServer.Holder.INSTANCE; } private HttpServer() { RxBus.get().register(this); } public void init() { InetAddress addr = NetUtils.getLocalIPAddress(); if (addr != null) { init(addr); } } public void reInit() { deinit(); init(); } private void init(InetAddress addr) { synchronized (this) { server = AndServer.serverBuilder() .port(6666) .timeout(10, TimeUnit.SECONDS) .inetAddress(addr) .listener(serverListener) .registerHandler(URL_ADD_CARD, new AddCardHandler()) .registerHandler(URL_DELETE_CARD, new DeleteCardHandler()) .build(); if (!server.isRunning()){ server.startup(); } } } private void deinit() { synchronized (this) { if (server != null) { server.shutdown(); } } } private Server.ServerListener serverListener = new Server.ServerListener() { @Override public void onStarted() { Log.d(TAG, "HttpServer started"); } @Override public void onStopped() { Log.d(TAG, "HttpServer onStopped"); } @Override public void onError(Exception e) { Log.d(TAG, "HttpServer onError:" + e.getMessage()); } };
}
#### 2.2)AddCardHandler.java:
public class AddCardHandler implements RequestHandler { private static final String TAG = "AddCardHandler";
@RequestMapping(method = {RequestMethod.POST}) @Override public void handle(HttpRequest request, HttpResponse response, HttpContext context) throws HttpException, IOException { StringBuilder builder = new StringBuilder(); BaseResponse baseResponse = new BaseResponse(0, "添加成功"); String content = HttpRequestParser.getContent(request); AddCardBean addCardBean = new Gson().fromJson(content, AddCardBean.class); if (addCardBean != null) { String name = addCardBean.getName(); String idNum = addCardBean.getIdnum(); String photo = addCardBean.getPhoto(); String gender = addCardBean.getGender(); String nation = addCardBean.getNation(); String address = addCardBean.getAddress(); String validStart = addCardBean.getValid_start(); String validEnd = addCardBean.getValid_end(); if (TextUtils.isEmpty(name)) { builder.append("name不能为空,"); } if (TextUtils.isEmpty(idNum)) { builder.append("idNum不能为空,"); } if (TextUtils.isEmpty(photo)) { builder.append("photo不能为空,"); } if (TextUtils.isEmpty(validStart)) { builder.append("validStart不能为空,"); } if (TextUtils.isEmpty(validEnd)) { builder.append("validEnd不能为空,"); } if (!TextUtils.isEmpty(builder.toString())) { baseResponse.code = 1; baseResponse.msg = builder.toString(); } else { //添加名单 CardBean cardBean = new CardBean(); cardBean.setName(name); cardBean.setSex(gender); cardBean.setNation(nation); cardBean.setIdNum(idNum); cardBean.setAddress(address); cardBean.setUserType(UserType.TYPE_WHITE); cardBean.setValidStart(validStart); cardBean.setValidEnd(validEnd); Log.i(TAG, "handle: " + cardBean.toString()); //解析base64图片 Bitmap bitmap = FileUtil.base64StringToBitmap(photo); String error = CardManager.getInstance().addCard(bitmap, idNum + Constants.JPG, cardBean); RxBus.get().post(new RxUserChange()); if (!TextUtils.isEmpty(error)) { baseResponse.code = 1; baseResponse.msg = error; } } } else { baseResponse.code = 1; baseResponse.msg = "参数错误"; } response.setEntity(new StringEntity(new Gson().toJson(baseResponse), "utf-8")); }
#### 2.3)DeleteCardHandler.java:
public class DeleteCardHandler implements RequestHandler { private static final String TAG = "DeleteCardHandler";
@RequestMapping(method = {RequestMethod.POST}) @Override public void handle(HttpRequest request, HttpResponse response, HttpContext context) throws HttpException, IOException { StringBuilder builder = new StringBuilder(); BaseResponse baseResponse = new BaseResponse(0, "删除成功"); String content = HttpRequestParser.getContent(request); DeleteCardBean deleteCardBean = new Gson().fromJson(content, DeleteCardBean.class); if (deleteCardBean != null) { List<String> idnums = deleteCardBean.getIdnum(); if (idnums.size() == 0) { builder.append("idnum不能为空"); } if (!TextUtils.isEmpty(builder.toString())) { baseResponse.code = 1; baseResponse.msg = builder.toString(); } else { //删除名单 for (String idnum : idnums) { CardManager.getInstance().deleteCard(idnum); RxBus.get().post(new RxUserChange()); } } } else { baseResponse.code = 1; baseResponse.msg = "参数错误"; } response.setEntity(new StringEntity(new Gson().toJson(baseResponse), "utf-8")); }
#### 2.4)在SplashActivity中开启HttpServer服务: `HttpServer.getInstance().init();// 开启http服务`
实现方案:
参考:
https://blog.csdn.net/yanzhenjie1003/article/details/64090436
AndServer使用:
一、添加依赖:
implementation 'com.yanzhenjie:andserver:1.1.4'
二、使用代码:
2.1)新建HttpServer.java,定义IP为设备IP,端口6666,以及添加需要的接口:
}
public class AddCardHandler implements RequestHandler { private static final String TAG = "AddCardHandler";
}
public class DeleteCardHandler implements RequestHandler { private static final String TAG = "DeleteCardHandler";
}