Java HTTP 请求返回 PDF 文件流
概述
在开发 Web 应用程序时,我们常常需要与服务器进行数据交互。HTTP 请求是最常用的一种方式,它可以用于获取服务器上的数据,也可以用于向服务器提交数据。有时,我们需要从服务器获取 PDF 文件,并将其以文件流的形式返回给客户端。本文将介绍如何使用 Java 发起 HTTP 请求并接收返回的 PDF 文件流。
使用 Apache HttpClient 发起 HTTP 请求
Apache HttpClient 是一个开源的 HTTP 客户端库,可以用于发送 HTTP 请求和接收 HTTP 响应。下面的示例代码演示了如何使用 HttpClient 发起 GET 请求,并接收返回的 PDF 文件流。
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.impl.client.HttpClientBuilder;
import org.apache.http.util.EntityUtils;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
public class HttpClientExample {
public static void main(String[] args) {
HttpClient httpClient = HttpClientBuilder.create().build();
HttpGet httpGet = new HttpGet("
try {
HttpResponse response = httpClient.execute(httpGet);
HttpEntity entity = response.getEntity();
if (entity != null) {
// 将文件流保存为本地文件
try (InputStream inputStream = entity.getContent();
FileOutputStream outputStream = new FileOutputStream("file.pdf")) {
byte[] buffer = new byte[1024];
int bytesRead;
while ((bytesRead = inputStream.read(buffer)) != -1) {
outputStream.write(buffer, 0, bytesRead);
}
}
}
EntityUtils.consume(entity);
} catch (IOException e) {
e.printStackTrace();
}
}
}
上述代码中,我们使用 HttpClient 创建了一个 GET 请求,并指定了需要获取的 PDF 文件的 URL。然后,我们调用 httpClient.execute(httpGet)
方法发送请求,并获取服务器的响应。如果响应成功,我们获取响应中的 HttpEntity
对象,并将其保存为本地文件。
使用 HttpURLConnection 发起 HTTP 请求
除了使用 HttpClient,我们也可以使用 Java 内置的 java.net.HttpURLConnection
类来发送 HTTP 请求。下面的示例代码演示了如何使用 HttpURLConnection 发起 GET 请求,并接收返回的 PDF 文件流。
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
public class HttpURLConnectionExample {
public static void main(String[] args) {
try {
URL url = new URL("
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
int responseCode = connection.getResponseCode();
if (responseCode == HttpURLConnection.HTTP_OK) {
// 将文件流保存为本地文件
try (InputStream inputStream = connection.getInputStream();
FileOutputStream outputStream = new FileOutputStream("file.pdf")) {
byte[] buffer = new byte[1024];
int bytesRead;
while ((bytesRead = inputStream.read(buffer)) != -1) {
outputStream.write(buffer, 0, bytesRead);
}
}
} else {
System.out.println("HTTP request failed with response code: " + responseCode);
}
connection.disconnect();
} catch (IOException e) {
e.printStackTrace();
}
}
}
在上面的示例代码中,我们首先创建了一个 URL
对象,指定了需要获取的 PDF 文件的 URL。然后,我们通过 url.openConnection()
方法创建 HttpURLConnection
对象,并设置请求方法为 GET。接下来,我们通过 connection.getResponseCode()
方法获取服务器的响应码,如果响应码为 HttpURLConnection.HTTP_OK
(200),则表示请求成功,我们可以获取服务器返回的文件流并保存为本地文件。
总结
本文介绍了如何使用 Java 发起 HTTP 请求,并接收返回的 PDF 文件流。我们使用了 Apache HttpClient 和 Java 内置的 HttpURLConnection
类分别演示了两种发送 HTTP 请求的方式。无论选择哪种方式,都可以轻松地获取服务器上的 PDF 文件流,并进行进一步的处理。
希望本文对你理解如何使用 Java 发起 HTTP 请求并处理返回的文件流有所帮助。如果你有任何问题或建议,请随时留言。