/
Ersh
/
homeworkHttp
Обзор
Документация
Войти
/
Ersh
/
homeworkHttp
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
homeworkHttpTask2NASA/src/main/java/NasaApodDownloader.java
94 строки
4 KB
Ersh
upload files
30 дек 2025, 15:05
30 дек 2025, 15:05
75f78b4
Код
Авторство
О чём код?
import org.apache.http.client.config.RequestConfig; import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.HttpGet; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClientBuilder; import org.apache.http.util.EntityUtils; import com.fasterxml.jackson.databind.ObjectMapper; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Paths; public class NasaApodDownloader { public static void main(String[] args) { String apiKey = "DEMO_KEY"; String apiUrl = "https://api.nasa.gov/planetary/apod?api_key=" + apiKey; try { CloseableHttpClient httpClient = HttpClientBuilder.create() .setDefaultRequestConfig(RequestConfig.custom() .setConnectTimeout(5000) .setSocketTimeout(30000) .setRedirectsEnabled(true) .build()) .build(); HttpGet apiRequest = new HttpGet(apiUrl); CloseableHttpResponse apiResponse = httpClient.execute(apiRequest); int statusCode = apiResponse.getStatusLine().getStatusCode(); System.out.println("API Response status: " + statusCode); String jsonResponse = EntityUtils.toString(apiResponse.getEntity()); System.out.println("API Response: " + jsonResponse); ObjectMapper mapper = new ObjectMapper(); ApodResponse apod = mapper.readValue(jsonResponse, ApodResponse.class); System.out.println("\n===== APOD Information ====="); System.out.println("Title: " + apod.getTitle()); System.out.println("Date: " + apod.getDate()); System.out.println("Media Type: " + apod.getMedia_type()); System.out.println("URL: " + apod.getUrl()); System.out.println("Copyright: " + apod.getCopyright()); System.out.println("Explanation: " + apod.getExplanation()); String imageUrl = apod.getUrl(); String fileName = extractFileName(imageUrl); System.out.println("\n===== Downloading Image ====="); System.out.println("Image URL: " + imageUrl); System.out.println("File name: " + fileName); HttpGet imageRequest = new HttpGet(imageUrl); CloseableHttpResponse imageResponse = httpClient.execute(imageRequest); int imageStatusCode = imageResponse.getStatusLine().getStatusCode(); System.out.println("Image download status: " + imageStatusCode); byte[] imageBytes = EntityUtils.toByteArray(imageResponse.getEntity()); System.out.println("Image size: " + imageBytes.length + " bytes"); saveImageToFile(fileName, imageBytes); System.out.println("Image saved to: " + new File(fileName).getAbsolutePath()); imageResponse.close(); apiResponse.close(); httpClient.close(); File savedFile = new File(fileName); if (savedFile.exists()) { System.out.println("\n✓ File exists and ready to open!"); System.out.println("File size: " + savedFile.length() + " bytes"); } } catch (IOException e) { e.printStackTrace(); } } private static String extractFileName(String url) { int lastSlashIndex = url.lastIndexOf('/'); if (lastSlashIndex != -1) { return url.substring(lastSlashIndex + 1); } return "apod_image.jpg"; } private static void saveImageToFile(String fileName, byte[] imageBytes) throws IOException { try (FileOutputStream fos = new FileOutputStream(fileName)) { fos.write(imageBytes); } } }