如何处理包含多个参数的GET请求Java Socket?[已关闭]

ozxc1zmp  于 2022-12-21  发布在  Java
关注(0)|答案(1)|浏览(104)

这个问题是由打字错误或无法再重现的问题引起的。虽然类似的问题在这里可能是on-topic,但这个问题的解决方式不太可能帮助未来的读者。
昨天关门了。
Improve this question
我正在用Java套接字编程编写一个接受GET请求的服务器。首先我创建了一个ServerSocket对象。

ServerSocket serverSocket = new ServerSocket(portNumber);
    System.out.println("Server listening on port " + portNumber);

    // Listen for incoming connections and handle them in a separate thread
    while (true) {
        // Accept an incoming connection
        Socket clientSocket = serverSocket.accept();

        // Create a new thread to handle the request
        Thread thread = new Thread(new ClientHandler(clientSocket,roomNames));
        thread.start();
    }

在ClientHandler(* 它实现Runnable类 *)内部,我得到如下输入和输出流:

@Override
public void run() {
    try {
        // Get the input and output streams for the socket
        BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));

        PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true);
        String request;
        // Read the incoming request
        request= in.readLine();

        //Print the request to the console
        System.out.println("request is:  "+request);
        // Parse the request to extract the query string
        String[] requestParts = request.split(" ");
        String url = requestParts[1];
        //print the url to the console
        System.out.println("url is:  "+url);
        String queryString = ""; // continues...}

当我在命令行中使用cURL发出请求时,得到的是:

这是服务器的控制台输出:

***我想要实现的是**获取URL中的参数,并使用它们添加到数组列表中。正如您在后面的图像中所看到的,请求是" GET/reserve?name = Z2115 HTTP/1.1 *"。我只能获取name参数的值,而不能获取day、hour和duration。

9wbgstp7

9wbgstp71#

正如@Stephen C在评论中指出的那样,我需要在curl的开头和结尾加上“(引号)。

相关问题