Java发送HTTP GET请求
在Java中,我们可以使用多种方式发送HTTP GET请求。本文将介绍使用Java中的HttpURLConnection和HttpClient两种方法发送HTTP GET请求的示例代码,并解释其原理和用法。
HttpURLConnection
HttpURLConnection是Java标准库中提供的一个用于发送HTTP请求的类。它可以发送GET、POST、PUT、DELETE等各种类型的HTTP请求,本文只讨论发送GET请求的用法。
示例代码
下面是使用HttpURLConnection发送GET请求的示例代码:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.nio.charset.StandardCharsets;
public class HttpGetExample {
public static void main(String[] args) {
try {
// 创建URL对象
URL url = new URL("
// 打开连接
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
// 设置请求方法为GET
connection.setRequestMethod("GET");
// 设置请求头
connection.setRequestProperty("User-Agent", "Mozilla/5.0");
// 获取响应码
int responseCode = connection.getResponseCode();
System.out.println("Response Code: " + responseCode);
// 读取响应内容
BufferedReader reader = new BufferedReader(
new InputStreamReader(connection.getInputStream(), StandardCharsets.UTF_8));
StringBuilder response = new StringBuilder();
String line;
while ((line = reader.readLine()) != null) {
response.append(line);
}
reader.close();
// 打印响应内容
System.out.println("Response: " + response.toString());
// 关闭连接
connection.disconnect();
} catch (IOException e) {
e.printStackTrace();
}
}
}
原理解释
上述代码中,我们首先创建一个URL对象,指定了要发送GET请求的URL地址。然后使用openConnection
方法打开连接并获得一个HttpURLConnection对象。接着,我们设置请求方法为GET,即setRequestMethod("GET")
。可以根据需要设置其他请求头参数,例如setRequestProperty("User-Agent", "Mozilla/5.0")
。
获取响应码的代码connection.getResponseCode()
可以用来判断请求是否成功。常见的响应码有200表示成功,404表示资源不存在,500表示服务器内部错误等。
读取响应内容的代码使用了InputStreamReader
和BufferedReader
来读取连接的输入流,并将其转化为字符串。通过connection.getInputStream()
可以获取输入流。
最后,我们使用disconnect
方法关闭连接。
HttpClient
HttpClient是Apache HttpComponents项目的一部分,它提供了更灵活、更高级的HTTP操作接口。使用HttpClient发送HTTP请求的代码相对于HttpURLConnection来说更简洁,特别适合在复杂场景中使用。
示例代码
下面是使用HttpClient发送GET请求的示例代码:
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.util.EntityUtils;
public class HttpClientGetExample {
public static void main(String[] args) {
try {
// 创建HttpClient对象
HttpClient httpClient = HttpClientBuilder.create().build();
// 创建HttpGet对象
HttpGet httpGet = new HttpGet("
// 设置请求头
httpGet.addHeader("User-Agent", "Mozilla/5.0");
// 发送请求并获取响应
HttpResponse response = httpClient.execute(httpGet);
// 获取响应码
int responseCode = response.getStatusLine().getStatusCode();
System.out.println("Response Code: " + responseCode);
// 读取响应内容
String responseBody = EntityUtils.toString(response.getEntity());
System.out.println("Response: " + responseBody);
} catch (IOException e) {
e.printStackTrace();
}
}
}
原理解释
上述代码中,我们首先创建一个HttpClient对象,使用HttpClientBuilder.create().build()
来创建一个默认的HttpClient实例。然后,创建一个HttpGet对象,指定了要发送GET请求的URL地址。我们可以通过addHeader
方法设置请求头参数。
使用httpClient.execute(httpGet)
方法发送请求并获取响应。通过response.getStatusLine().getStatusCode()
可以获取响应码,通过EntityUtils.toString(response.getEntity())
可以获取响应内容。
类图
下面是HttpURLConnection和HttpClient的类图:
classDiagram
HttpURLConnection <|-- HttpGetExample
HttpClient <|-- HttpClientGetExample
总结
本文介绍了使用Java中的HttpURLConnection和HttpClient两种方式发送HTTP