一、场景:
想没想过在自己的Android的 app里内嵌一个http server服务端,这样咱们就可以从PC和手机上的浏览器遥控app了。接下来就使用一个GitHub的开源库Nanohttpd在app内搭建一个小型http的server。开源库地址:GitHub - NanoHttpd/nanohttpd: Tiny, easily embeddable HTTP server in Java.
二、简单集成使用
引入依赖库:implementation 'org.nanohttpd:nanohttpd:2.3.1'
写一个类继承依赖库的NanoHTTPD.java,具体对外提供资源访问的代码在重写的serve方法中,
/**
* Date: 2022/4/19
* Author: SunBinKang
* Description: 传入主机IP和自定义的端口号,这里的主机明要为安装app的那台设备的网络IP地址
*/
class HttpServerV1(hostname: String?, port: Int) : NanoHTTPD(hostname, port) {//继承NanoHTTPD
private val TAG = "binkang"
private var count = 0 //用于记录请求为第几次
private var mGson: Gson = Gson() //用于记录请求为第几次
override fun serve(session: IHTTPSession?): Response {
return dealWith(session)
}
private fun dealWith(session: IHTTPSession?): Response {
//日志输出外部请求相关的日志信息
Log.i(
TAG,
"dealWith: session.uri = ${session?.uri}, method = ${session?.method}, header = ${session?.headers}, " +
"params = ${session?.parameters}"
)
//响应get请求
if (Method.GET == session?.method) {