📜  发送带参数的 HTTP 获取请求. - Java (1)

📅  最后修改于: 2023-12-03 15:37:08.014000             🧑  作者: Mango

发送带参数的 HTTP GET 请求 - Java

在 Java 中,我们可以使用 URLConnection 或第三方库(如 Apache HttpComponents、OkHttp 等)发送 HTTP 请求。本文将介绍如何使用 URLConnection 发送带参数的 HTTP GET 请求。

步骤
  1. 创建 URL 对象并指定请求 URL。
  2. URL 对象中获取 URLConnection 对象。
  3. 配置 URLConnection 对象(如设置超时时间)。
  4. 如果需要发送数据,设置请求方法为 GET(默认为 GET)。
  5. 将参数拼接到 URL 中(如 http://example.com/path?key1=value1&key2=value2)。
  6. 发送请求并获取响应(如读取响应内容、获取状态码等)。

下面是一个示例代码,向 http://example.com/path 发送带参数的 HTTP GET 请求:

import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.BufferedReader;
import java.net.URL;
import java.net.URLConnection;
import java.net.URLEncoder;

public class HttpGetWithParametersExample {
  public static void main(String[] args) throws Exception {
    String charset = "UTF-8";
    String url = "http://example.com/path";
    String param1 = "value1";
    String param2 = "value2";

    String query = String.format("key1=%s&key2=%s",
        URLEncoder.encode(param1, charset),
        URLEncoder.encode(param2, charset));

    URLConnection connection = new URL(url + "?" + query).openConnection();
    connection.setConnectTimeout(5000);
    connection.setReadTimeout(5000);

    InputStream responseStream = connection.getInputStream();
    BufferedReader reader = new BufferedReader(new InputStreamReader(responseStream, charset));

    String line;
    StringBuilder response = new StringBuilder();
    while ((line = reader.readLine()) != null) {
      response.append(line);
    }

    int statusCode = ((HttpURLConnection) connection).getResponseCode();

    System.out.println("Response Code: " + statusCode);
    System.out.println("Response Body: " + response);
  }
}

在上面的示例代码中,我们使用 URLEncoder.encode() 方法对参数进行 URL 编码,以避免特殊字符(如空格、斜杠等)引起的问题。发送请求后,我们使用 InputStreamBufferedReader 逐行读取响应内容,并使用 getResponseCode() 方法获取响应状态码。

异常处理

在发送 HTTP 请求时,可能会出现以下异常:

  • IOException,如网络不可用、连接超时等。
  • MalformedURLException,如 URL 格式不正确。

我们需要适当地处理这些异常,以避免程序崩溃或安全问题。

参考
总结

本文介绍了如何使用 URLConnection 发送带参数的 HTTP GET 请求,并给出了一个完整的示例代码。在实际开发中,我们可能需要处理更多的异常情况和使用更多的参数配置项。