Java GET 请求如何传数组

引言

在开发中,我们经常需要使用HTTP请求来获取数据。GET请求是一种常见的请求方式,它可以用于从服务器获取数据。有时,我们需要在GET请求中传递数组参数,本文将介绍如何在Java中实现这一功能。

问题描述

假设我们要从服务器获取某个商品的价格列表,服务器的接口如下所示:

GET /prices?product=123&prices[]=10&prices[]=20&prices[]=30

在上述接口中,我们需要传递商品的ID,并且可以传递一个或多个价格作为数组。我们的目标是使用Java的HTTP库,通过GET请求获取价格列表。

解决方案

使用Apache HttpClient库

Apache HttpClient是一个流行的HTTP客户端库,我们可以使用它来发送HTTP请求。下面是一个使用Apache HttpClient库发送GET请求的示例代码:

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.util.EntityUtils;
import org.apache.http.impl.client.HttpClientBuilder;

import java.io.IOException;

public class HttpClientExample {

    public static void main(String[] args) throws IOException {
        // 创建HttpClient实例
        HttpClient httpClient = HttpClientBuilder.create().build();

        // 创建GET请求
        String url = "
        HttpGet httpGet = new HttpGet(url);

        // 发送请求并获取响应
        HttpResponse response = httpClient.execute(httpGet);

        // 解析响应
        HttpEntity entity = response.getEntity();
        String responseString = EntityUtils.toString(entity);
        System.out.println("Response: " + responseString);
    }
}

在上述代码中,我们首先创建了一个HttpClient实例,并设置了要发送的GET请求的URL。然后,我们使用HttpClient实例执行GET请求,并获取服务器的响应。最后,我们解析响应并打印出来。

使用Java原生库

如果您不想使用第三方库,您也可以使用Java原生库来发送GET请求。下面是一个使用Java原生库发送GET请求的示例代码:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;

public class HttpURLConnectionExample {

    public static void main(String[] args) throws IOException {
        // 创建URL对象
        String url = "
        URL obj = new URL(url);

        // 打开连接
        HttpURLConnection con = (HttpURLConnection) obj.openConnection();

        // 设置请求方法为GET
        con.setRequestMethod("GET");

        // 获取响应码
        int responseCode = con.getResponseCode();
        System.out.println("Response Code: " + responseCode);

        // 读取响应内容
        BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
        String inputLine;
        StringBuilder response = new StringBuilder();
        while ((inputLine = in.readLine()) != null) {
            response.append(inputLine);
        }
        in.close();

        // 打印响应内容
        System.out.println("Response: " + response.toString());
    }
}

在上述代码中,我们首先创建了一个URL对象,并设置了要发送的GET请求的URL。然后,我们打开连接,并设置请求方法为GET。接下来,我们获取服务器的响应码,并读取响应内容。最后,我们打印出响应内容。

流程图

下面是使用mermaid语法表示的流程图,展示了整个GET请求传递数组的流程:

flowchart TD
    A[开始] --> B[创建HTTP请求]
    B --> C[发送HTTP请求]
    C --> D[获取服务器响应]
    D --> E[解析响应]
    E --> F[打印响应]
    F --> G[结束]

甘特图

下面是使用mermaid语法表示的甘特图,展示了整个GET请求传递数组的时间安排:

gantt
    dateFormat  YYYY-MM-DD
    title GET请求传递数组甘特图

    section 发送请求
    创建HTTP请求        :2022-01-01, 1d
    发送HTTP请求        :2022-01-02, 1d

    section 处理响应
    获取服务器响应     :2022-01-03, 1d
    解析