在这个信息爆炸的时代,获取实时信息已经成为我们日常生活中不可或缺的一部分。对于出行者来说,航班信息的实时查询更是尤为重要。今天,我将向大家介绍如何使用Java轻松获取航班号的实时动态。
1. 选择合适的API
首先,我们需要选择一个可靠的航班信息API。目前市面上有很多提供航班信息查询的API,例如:航旅纵横、飞猪等。这些API通常都提供了详细的航班信息,包括航班号、起飞时间、到达时间、状态等。
以下是一个简单的示例,展示了如何使用航旅纵横API获取航班信息:
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
public class FlightInfo {
public static void main(String[] args) {
try {
String flightNo = "MU5161"; // 假设我们要查询的航班号是MU5161
String apiUrl = "https://api.viptaobao.com/flightinfo?flightNo=" + flightNo;
String result = httpGet(apiUrl);
System.out.println(result);
} catch (Exception e) {
e.printStackTrace();
}
}
// 使用HTTP GET请求获取航班信息
public static String httpGet(String urlString) throws Exception {
URL url = new URL(urlString);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
connection.connect();
int responseCode = connection.getResponseCode();
if (responseCode == HttpURLConnection.HTTP_OK) {
BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
String inputLine;
StringBuilder response = new StringBuilder();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
return response.toString();
} else {
return "Failed to get flight info, response code: " + responseCode;
}
}
}
2. 分析API返回结果
通过上面的示例,我们获取到了航班信息的JSON字符串。接下来,我们需要对JSON字符串进行解析,提取出有用的信息。
以下是一个简单的示例,展示了如何使用Gson库解析JSON字符串:
import com.google.gson.Gson;
public class FlightInfoAnalysis {
public static void main(String[] args) {
String json = "{\"flightNo\":\"MU5161\",\"departureTime\":\"2021-10-01 12:00\",\"arrivalTime\":\"2021-10-01 15:00\",\"status\":\"已起飞\"}";
Gson gson = new Gson();
FlightInfo info = gson.fromJson(json, FlightInfo.class);
System.out.println("航班号:" + info.getFlightNo());
System.out.println("起飞时间:" + info.getDepartureTime());
System.out.println("到达时间:" + info.getArrivalTime());
System.out.println("状态:" + info.getStatus());
}
}
class FlightInfo {
private String flightNo;
private String departureTime;
private String arrivalTime;
private String status;
public String getFlightNo() {
return flightNo;
}
public void setFlightNo(String flightNo) {
this.flightNo = flightNo;
}
public String getDepartureTime() {
return departureTime;
}
public void setDepartureTime(String departureTime) {
this.departureTime = departureTime;
}
public String getArrivalTime() {
return arrivalTime;
}
public void setArrivalTime(String arrivalTime) {
this.arrivalTime = arrivalTime;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
}
3. 定期更新航班信息
在实际应用中,我们可能需要定期更新航班信息。这可以通过定时任务来实现,例如使用Java的ScheduledExecutorService。
以下是一个简单的示例,展示了如何使用定时任务更新航班信息:
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
public class FlightInfoScheduler {
public static void main(String[] args) {
ScheduledExecutorService executorService = Executors.newScheduledThreadPool(1);
executorService.scheduleAtFixedRate(() -> {
try {
String flightNo = "MU5161";
String apiUrl = "https://api.viptaobao.com/flightinfo?flightNo=" + flightNo;
String result = httpGet(apiUrl);
Gson gson = new Gson();
FlightInfo info = gson.fromJson(result, FlightInfo.class);
System.out.println("航班号:" + info.getFlightNo());
System.out.println("起飞时间:" + info.getDepartureTime());
System.out.println("到达时间:" + info.getArrivalTime());
System.out.println("状态:" + info.getStatus());
} catch (Exception e) {
e.printStackTrace();
}
}, 0, 1, TimeUnit.HOURS);
}
}
通过以上步骤,我们就可以使用Java轻松获取航班号的实时动态了。在实际应用中,您可以根据自己的需求进行调整和优化。
