Usage of Retrofit is pretty more easy
build.gradle
implementation 'com.google.code.gson:gson:2.9.1'
implementation 'com.squareup.retrofit2:retrofit:2.9.0'
implementation 'com.squareup.retrofit2:converter-gson:2.9.0'
ApiService.java
public interface ApiService {
@GET("AirSearch/oneway.php?tripType=oneway&journeyfrom=DAC&journeyto=DXB&departuredate=2022-10-30&adult=1&child=0&infant=0")
Call<List<Item>> getData();
}
ApiUtil.java
public final class ApiUtil {
private static Retrofit retrofit;
private static Retrofit provideRetrofit() {
if(retrofit != null) {
return retrofit;
}
retrofit = new Retrofit.Builder()
.baseUrl("https://api.flyfarint.com/v.1.0.0/")
.addConverterFactory(GsonConverterFactory.create())
.build();
return retrofit;
}
public static ApiService getApi() {
return provideRetrofit().create(ApiService.class);
}
}
MainActivity.java
private void fetchData() {
ApiUtil.getApi().getData().enqueue(new Callback<List<Item>>() {
@Override
public void onResponse(@NonNull Call<List<Item>> call, @NonNull Response<List<Item>> response) {
if(response.isSuccessful() && response.body() != null) {
+ List<Item> data = response.body();
// data contains parsed json
}
}
@Override
public void onFailure(@NonNull Call<List<Item>> call, @NonNull Throwable t) {
Log.e("ApiUtil", t.toString());
}
});
}
Item.java
public class Item {
@SerializedName("system")
@Expose
public String system;
@SerializedName("segment")
@Expose
public String segment;
@SerializedName("career")
@Expose
public String career;
@SerializedName("careerName")
@Expose
public String careerName;
@SerializedName("BasePrice")
@Expose
public String basePrice;
@SerializedName("Taxes")
@Expose
public String taxes;
@SerializedName("price")
@Expose
public String price;
@SerializedName("clientPrice")
@Expose
public String clientPrice;
@SerializedName("departure")
@Expose
public String departure;
@SerializedName("departureTime")
@Expose
public String departureTime;
@SerializedName("departureDate")
@Expose
public String departureDate;
@SerializedName("arrival")
@Expose
public String arrival;
@SerializedName("arrivalTime")
@Expose
public String arrivalTime;
@SerializedName("arrivalDate")
@Expose
public String arrivalDate;
@SerializedName("flightduration")
@Expose
public String flightduration;
@SerializedName("bags")
@Expose
public String bags;
@SerializedName("seat")
@Expose
public String seat;
@SerializedName("class")
@Expose
public String _class;
@SerializedName("refundable")
@Expose
public String refundable;
@SerializedName("segments")
@Expose
public List<Segment> segments = null;
@SerializedName("transit")
@Expose
public Transit transit;
}
Segment.java
public class Segment {
@SerializedName("marketingcareer")
@Expose
public String marketingcareer;
@SerializedName("marketingcareerName")
@Expose
public String marketingcareerName;
@SerializedName("marketingflight")
@Expose
public String marketingflight;
@SerializedName("operatingcareer")
@Expose
public String operatingcareer;
@SerializedName("operatingflight")
@Expose
public String operatingflight;
@SerializedName("departure")
@Expose
public String departure;
@SerializedName("departureAirport")
@Expose
public String departureAirport;
@SerializedName("departureLocation")
@Expose
public String departureLocation;
@SerializedName("departureTime")
@Expose
public Date departureTime;
@SerializedName("arrival")
@Expose
public String arrival;
@SerializedName("arrivalTime")
@Expose
public Date arrivalTime;
@SerializedName("arrivalAirport")
@Expose
public String arrivalAirport;
@SerializedName("arrivalLocation")
@Expose
public String arrivalLocation;
@SerializedName("flightduration")
@Expose
public String flightduration;
@SerializedName("bookingcode")
@Expose
public String bookingcode;
@SerializedName("seat")
@Expose
public String seat;
}
Transit.java
public class Transit {
public final static long serialVersionUID = 5413373419576714522L;
@SerializedName("transit1")
@Expose
public String transit1;
}