android

android nanohttpd如何处理GET请求

小樊
88
2024-11-21 10:22:19
栏目: 编程语言

NanoHTTPD是一个轻量级的Android HTTP服务器,用于处理HTTP请求

  1. 首先,确保已经在项目的build.gradle文件中添加了NanoHTTPD的依赖项:
dependencies {
    implementation 'org.nanohttpd:nanohttpd:2.4.1'
}
  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"的响应。

  1. 运行应用程序。你应该能看到一个消息,指示服务器已在端口8080上启动。在浏览器或其他HTTP客户端中访问http://localhost:8080/,你应该看到"Hello, World!"的响应。对于其他URL,你将收到"Not Found"的响应。

请注意,由于Android不允许在主线程上运行网络操作,因此我们在一个单独的线程中启动了NanoHTTPD服务器。

0
看了该问题的人还看了