作者:H-蔡鸿晖_515 | 来源:互联网 | 2023-09-25 16:04
用途NanoHTTPD是一个免费、轻量级的(只有一个Java文件)HTTP服务器,可以很好地嵌入到Java程序中。支持GET,POST,PUT,HEAD和DELETE请求
用途
NanoHTTPD是一个免费、轻量级的(只有一个Java文件) HTTP服务器,可以很好地嵌入到Java程序中。支持 GET, POST, PUT, HEAD 和 DELETE 请求,支持文件上传,占用内存很小。
本篇文章将在安卓APP中使用NanoHTTPD,搭建简易API接口服务。
正文
1. 导包:打开“app”或“app/src/main/”目录下的“build.gradle”文件,添加如下代码,该段代码是引入该包的意思,添加位置如图所示。PS:添加完代码后,需点击右上角“Sync Now”立即同步包。
implementation'org.nanohttpd:nanohttpd:2.2.0'
2. 写一个类(我命名为HttpService类)继承NanoHTTPD抽象类,并重写serve方法
import fi.iki.elonen.NanoHTTPD;public class HttpService extends NanoHTTPD {public HttpService(int port){super(port);}@Overridepublic Response serve(IHTTPSession session) {String uri = session.getUri();return NanoHTTPD.newFixedLengthResponse(uri);}
}
3. 在MainActivity类中编写如下代码,启用NanoHTTPD服务
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;import java.io.IOException;public class MainActivity extends AppCompatActivity {HttpService http = new HttpService(9988);@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);System.out.println("服务启动中");try {http.start();System.out.println("服务启动完成");} catch (IOException e) {e.printStackTrace();System.out.println("服务启动错误");}}@Overrideprotected void onDestroy() {super.onDestroy();http.stop();}
}
4. 打开“app/src/main/AndroidManifest.xml”,在manifest标签中加入网络权限的声明,不加会报“java.net.SocketException: socket failed: EACCES ”异常错误
<uses-permission android:name="android.permission.INTERNET"/>
5. 编译并运行测试,效果如图: