Java下載文件時(shí)如何設(shè)置請(qǐng)求頭信息

小樊
98
2024-10-10 01:44:43

在Java中,你可以使用HttpURLConnection或者Apache HttpClient來(lái)發(fā)送帶有自定義請(qǐng)求頭的HTTP請(qǐng)求以下載文件。這里我將為你提供兩種方法的示例:

方法1:使用HttpURLConnection

import java.io.*;
import java.net.HttpURLConnection;
import java.net.URL;

public class DownloadFileWithHttpURLConnection {
    public static void main(String[] args) {
        String fileUrl = "https://example.com/file.txt";
        String destinationFile = "downloaded_file.txt";

        try {
            downloadFile(fileUrl, destinationFile);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public static void downloadFile(String fileUrl, String destinationFile) throws IOException {
        URL url = new URL(fileUrl);
        HttpURLConnection connection = (HttpURLConnection) url.openConnection();

        // 設(shè)置請(qǐng)求頭信息
        connection.setRequestProperty("User-Agent", "Mozilla/5.0");
        connection.setRequestProperty("Authorization", "Bearer your_access_token");

        // 設(shè)置下載文件
        connection.setDoOutput(true);
        try (InputStream inputStream = connection.getInputStream();
             OutputStream outputStream = new FileOutputStream(destinationFile)) {

            byte[] buffer = new byte[1024];
            int bytesRead;

            while ((bytesRead = inputStream.read(buffer)) != -1) {
                outputStream.write(buffer, 0, bytesRead);
            }
        }

        // 斷開(kāi)連接
        connection.disconnect();
    }
}

方法2:使用Apache HttpClient

首先,確保你已經(jīng)添加了Apache HttpClient的依賴。如果你使用的是Maven,可以在pom.xml文件中添加以下依賴:

<dependency>
    <groupId>org.apache.httpcomponents</groupId>
    <artifactId>httpclient</artifactId>
    <version>4.5.13</version>
</dependency>

然后,你可以使用以下代碼下載文件并設(shè)置請(qǐng)求頭信息:

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;

public class DownloadFileWithApacheHttpClient {
    public static void main(String[] args) {
        String fileUrl = "https://example.com/file.txt";
        String destinationFile = "downloaded_file.txt";

        try {
            downloadFile(fileUrl, destinationFile);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public static void downloadFile(String fileUrl, String destinationFile) throws IOException {
        CloseableHttpClient httpClient = HttpClients.createDefault();
        HttpGet httpGet = new HttpGet(fileUrl);

        // 設(shè)置請(qǐng)求頭信息
        httpGet.setHeader("User-Agent", "Mozilla/5.0");
        httpGet.setHeader("Authorization", "Bearer your_access_token");

        try (InputStream inputStream = httpClient.execute(httpGet).getEntity().getContent();
             OutputStream outputStream = new FileOutputStream(destinationFile)) {

            byte[] buffer = new byte[1024];
            int bytesRead;

            while ((bytesRead = inputStream.read(buffer)) != -1) {
                outputStream.write(buffer, 0, bytesRead);
            }
        }

        httpClient.close();
    }
}

請(qǐng)注意,你需要將your_access_token替換為實(shí)際的訪問(wèn)令牌。這兩種方法都可以實(shí)現(xiàn)下載文件并設(shè)置請(qǐng)求頭信息。你可以根據(jù)自己的需求選擇合適的方法。

0