📅  最后修改于: 2023-12-03 15:37:08.014000             🧑  作者: Mango
在 Java 中,我们可以使用 URLConnection
或第三方库(如 Apache HttpComponents、OkHttp 等)发送 HTTP 请求。本文将介绍如何使用 URLConnection
发送带参数的 HTTP GET 请求。
URL
对象并指定请求 URL。URL
对象中获取 URLConnection
对象。URLConnection
对象(如设置超时时间)。GET
(默认为 GET
)。http://example.com/path?key1=value1&key2=value2
)。下面是一个示例代码,向 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 编码,以避免特殊字符(如空格、斜杠等)引起的问题。发送请求后,我们使用 InputStream
和 BufferedReader
逐行读取响应内容,并使用 getResponseCode()
方法获取响应状态码。
在发送 HTTP 请求时,可能会出现以下异常:
IOException
,如网络不可用、连接超时等。MalformedURLException
,如 URL 格式不正确。我们需要适当地处理这些异常,以避免程序崩溃或安全问题。
本文介绍了如何使用 URLConnection
发送带参数的 HTTP GET 请求,并给出了一个完整的示例代码。在实际开发中,我们可能需要处理更多的异常情况和使用更多的参数配置项。