ip-api.com์์๋ batch ์๋ํฌ์ธํธ๋ฅผ ์ฌ์ฉํ๋ฉด ํ ๋ฒ์ ์ฌ๋ฌ ๊ฐ์ IP ์ ๋ณด๋ฅผ ์กฐํํ ์ ์์ต๋๋ค. ์๋๋ Java์์ HttpClient๋ฅผ ์ฌ์ฉํ์ฌ 100๊ฐ์ IP ์ฃผ์๋ฅผ ํ ๋ฒ์ ์์ฒญํ๊ณ , ๊ตญ๊ฐ ๋ฐ ๋์ ์ ๋ณด๋ฅผ ๋ฐ์์ค๋ ์ฝ๋์
๋๋ค.
Java ์ฝ๋ (ip-api batch ์์ฒญ)
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
public class IpApiBatchRequest {
private static final String API_URL = "http://ip-api.com/batch";
private static final HttpClient client = HttpClient.newHttpClient();
private static final ObjectMapper objectMapper = new ObjectMapper();
public static void main(String[] args) {
// ์กฐํํ IP ๋ฆฌ์คํธ (์์ )
List<String> ipList = Arrays.asList(
"8.8.8.8", "8.8.4.4", "1.1.1.1", "1.0.0.1", "208.67.222.222",
"208.67.220.220", "4.2.2.2", "4.2.2.1", "9.9.9.9", "149.112.112.112"
// 100๊ฐ๊น์ง ์ถ๊ฐ ๊ฐ๋ฅ
);
try {
List<JsonNode> results = fetchIpInfo(ipList);
for (JsonNode node : results) {
String query = node.get("query").asText();
String country = node.get("country").asText();
String city = node.get("city").asText();
System.out.println(query + " -> " + country + ", " + city);
}
} catch (Exception e) {
e.printStackTrace();
}
}
public static List<JsonNode> fetchIpInfo(List<String> ipList) throws Exception {
// JSON ํ์์ IP ๋ฆฌ์คํธ ์์ฑ
String requestBody = objectMapper.writeValueAsString(ipList);
// HTTP ์์ฒญ ์์ฑ
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create(API_URL))
.header("Content-Type", "application/json")
.POST(HttpRequest.BodyPublishers.ofString(requestBody))
.build();
// HTTP ์์ฒญ ๋ณด๋ด๊ธฐ
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
// ์๋ต JSON ํ์ฑ
return Arrays.asList(objectMapper.readValue(response.body(), JsonNode[].class));
}
}
---
์ค๋ช
1. 100๊ฐ IP ๋ฆฌ์คํธ๋ฅผ JSON ๋ฐฐ์ด๋ก ๋ณํ
ipList๋ฅผ JSON ๋ฐฐ์ด ํ์์ผ๋ก ๋ณํํ์ฌ ip-api.com/batch์ POST ์์ฒญ์ ๋ณด๋.
2. HTTP ์์ฒญ ๋ฐ ์๋ต ์ฒ๋ฆฌ
HttpClient๋ฅผ ์ฌ์ฉํ์ฌ API ์์ฒญ์ ๋ณด๋ด๊ณ ์๋ต์ JSON์ผ๋ก ๋ณํ.
3. JSON ์๋ต ํ์ฑ ํ ๊ตญ๊ฐ ๋ฐ ๋์ ์ถ๋ ฅ
ObjectMapper๋ฅผ ์ด์ฉํด JSON์ JsonNode ๋ฆฌ์คํธ๋ก ๋ณํํ๊ณ , query, country, city ๊ฐ์ ์ถ๋ ฅ.
---
์์ ์คํ ๊ฒฐ๊ณผ
8.8.8.8 -> United States, Mountain View
8.8.4.4 -> United States, Mountain View
1.1.1.1 -> Australia, Sydney
1.0.0.1 -> Australia, Sydney
208.67.222.222 -> United States, San Francisco
...
์ด ์ฝ๋๋ฅผ ์คํํ๋ฉด ํ ๋ฒ์ ์ต๋ 100๊ฐ์ IP์ ๋ํ ๊ตญ๊ฐ ๋ฐ ๋์ ์ ๋ณด๋ฅผ ๋ฐ์์ฌ ์ ์์ต๋๋ค.