NanoHTTPD是一个轻量级的Android HTTP服务器,用于处理HTTP请求
- 首先,确保已经在项目的build.gradle文件中添加了NanoHTTPD的依赖项:
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, Mapheaders, 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"的响应。
- 运行应用程序。你应该能看到一个消息,指示服务器已在端口8080上启动。在浏览器或其他HTTP客户端中访问
http://localhost:8080/
,你应该看到"Hello, World!"的响应。对于其他URL,你将收到"Not Found"的响应。
请注意,由于Android不允许在主线程上运行网络操作,因此我们在一个单独的线程中启动了NanoHTTPD服务器。