NanoHTTPD是一个轻量级的Android HTTP服务器,用于处理HTTP请求
dependencies {
implementation 'org.nanohttpd:nanohttpd:2.4.1'
}
MainActivity.java
的新文件,并在其中添加以下代码:import android.os.Bundle;
import android.util.Log;
import androidx.appcompat.app.AppCompatActivity;
import org.nanohttpd.server.NanoHTTPD;
import org.nanohttpd.server.Server;
public class MainActivity extends AppCompatActivity {
private static final int PORT = 8080;
private static final String TAG = "MainActivity";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
startServer();
}
private void startServer() {
new Thread(() -> {
try {
Server server = new NanoHTTPD(PORT) {
@Override
public Response serve(String uri, Method method, Map<String, String> headers,
byte[] body) {
if (uri.equals("/")) {
return newFixedLengthResponse("Hello, World!", HttpStatus.SC_OK, "text/plain");
} else {
return newFixedLengthResponse("Not Found", HttpStatus.SC_NOT_FOUND, "text/plain");
}
}
};
server.start();
Log.d(TAG, "Server started on port " + PORT);
} catch (IOException e) {
Log.e(TAG, "Error starting server", e);
}
}).start();
}
}
在这个示例中,我们创建了一个名为startServer
的方法,该方法在一个新的线程中启动NanoHTTPD服务器。服务器监听8080端口。当用户访问根URL(“/”)时,服务器返回一个包含"Hello, World!"的文本响应。对于其他URL,服务器返回一个"Not Found"的响应。
http://localhost:8080/
,你应该看到"Hello, World!"的响应。对于其他URL,你将收到"Not Found"的响应。请注意,由于Android不允许在主线程上运行网络操作,因此我们在一个单独的线程中启动了NanoHTTPD服务器。