java - 如何在Retrofit2中查询

标签 java android retrofit2

我将获取我登录用户的数据。因此,不要获取所有数据并将其存储在 ArrayList 中,然后调用循环,然后通过 if 语句进行检查。有没有最简单、最短的方法?顺便说一句,这是我的代码。

public static final String BASE_URL = "http://busartery.us-3.evennode.com/";

public static Retrofit getClient() {
    Retrofit retrofit = null;

    if (retrofit == null) {
        retrofit = new Retrofit.Builder()
                .baseUrl(Config.BASE_URL)
                .addConverterFactory(GsonConverterFactory.create())
                .build();
    }
    return retrofit;
}

public interface APIServiceDriver {

    @POST("/sessions/")
    @FormUrlEncoded
    Call<Driver> driverLogin(@Field("username") String username,
                         @Field("password") String password,
                         @Field("type") String type);

    @GET("/drivers/")
    Call<List<Driver>> getDriverInfo();
}

APIServiceDriver serviceDriver = Config.getClient().create(APIServiceDriver.class);
    Call<List<Driver>> call = serviceDriver.getDriverInfo();
    call.enqueue(new Callback<List<Driver>>() {
        @Override
        public void onResponse(Call<List<Driver>> call, Response<List<Driver>> response) {
            if (response.isSuccessful()) {
                driverList = response.body();

                if (driverList.size() != 0) {
                    for (int i = 0; i < driverList.size(); i++) {
                        mDriverName = driverList.get(i).getDriversName();
                        mUsername = driverList.get(i).getDriversName();
                        mAge = driverList.get(i).getAge();
                        mBusNumber = driverList.get(i).getBusNumber();
                        mBusType = driverList.get(i).getBusType();
                        mCompanyName = driverList.get(i).getCompanyName();
                        mRoute = driverList.get(i).getRoute();
                        mCapacity = driverList.get(i).getCapacity();

                        if (mUsername.equals(pref.getString("username", ""))) {
                            txtDriverName.setText(mDriverName);
                            txtUsername.setText(mUsername);
                            txtAge.setText(mAge);
                            txtBusNumber.setText(mBusNumber);
                            txtBusType.setText(mBusType);
                            txtCompanyName.setText(mCompanyName);
                            txtRoute.setText(mRoute);
                            txtCapacity.setText(mCapacity);
                        }
                    }
                }
            }
        }

        @Override
        public void onFailure(Call<List<Driver>> call, Throwable t) {
            progressDialog.dismiss();
            Toast.makeText(DriverInformationActivity.this, "onFailure: "+t.getMessage(), Toast.LENGTH_SHORT).show();
        }
    });

驱动程序POJO

public class Driver {

@SerializedName("fullName")
@Expose
private String fullName;
@SerializedName("username")
@Expose
private String username;
@SerializedName("password")
@Expose
private String password;
@SerializedName("age")
@Expose
private Integer age;
@SerializedName("employeeId")
@Expose
private String employeeId;
@SerializedName("isActive")
@Expose
private Boolean isActive;
@SerializedName("longitude")
@Expose
private String longitude;
@SerializedName("latitude")
@Expose
private String latitude;
@SerializedName("origin")
@Expose
private String origin;
@SerializedName("estimatedTime")
@Expose
private String estimatedTime;
@SerializedName("busNumber")
@Expose
private BusNumber busNumber;

public String getFullName() {
    return fullName;
}

public void setFullName(String fullName) {
    this.fullName = fullName;
}

public String getUsername() {
    return username;
}

public void setUsername(String username) {
    this.username = username;
}

public String getPassword() {
    return password;
}

public void setPassword(String password) {
    this.password = password;
}

public Integer getAge() {
    return age;
}

public void setAge(Integer age) {
    this.age = age;
}

public String getEmployeeId() {
    return employeeId;
}

public void setEmployeeId(String employeeId) {
    this.employeeId = employeeId;
}

public Boolean getIsActive() {
    return isActive;
}

public void setIsActive(Boolean isActive) {
    this.isActive = isActive;
}

public String getLongitude() {
    return longitude;
}

public void setLongitude(String longitude) {
    this.longitude = longitude;
}

public String getLatitude() {
    return latitude;
}

public void setLatitude(String latitude) {
    this.latitude = latitude;
}

public String getOrigin() {
    return origin;
}

public void setOrigin(String origin) {
    this.origin = origin;
}

public String getEstimatedTime() {
    return estimatedTime;
}

public void setEstimatedTime(String estimatedTime) {
    this.estimatedTime = estimatedTime;
}

public BusNumber getBusNumber() {
    return busNumber;
}

public void setBusNumber(BusNumber busNumber) {
    this.busNumber = busNumber;
}}

巴士号码 POJO

public class BusNumber {

@SerializedName("companyName")
@Expose
private String companyName;
@SerializedName("busNumber")
@Expose
private String busNumber;
@SerializedName("busType")
@Expose
private String busType;
@SerializedName("destination")
@Expose
private String destination;
@SerializedName("location")
@Expose
private String location;
@SerializedName("capacity")
@Expose
private Integer capacity;
@SerializedName("route")
@Expose
private String route;

public String getCompanyName() {
    return companyName;
}

public void setCompanyName(String companyName) {
    this.companyName = companyName;
}

public String getBusNumber() {
    return busNumber;
}

public void setBusNumber(String busNumber) {
    this.busNumber = busNumber;
}

public String getBusType() {
    return busType;
}

public void setBusType(String busType) {
    this.busType = busType;
}

public String getDestination() {
    return destination;
}

public void setDestination(String destination) {
    this.destination = destination;
}

public String getLocation() {
    return location;
}

public void setLocation(String location) {
    this.location = location;
}

public Integer getCapacity() {
    return capacity;
}

public void setCapacity(Integer capacity) {
    this.capacity = capacity;
}

public String getRoute() {
    return route;
}

public void setRoute(String route) {
    this.route = route;
}}

而且,此代码将被定向到 onFailure()。

Database

最佳答案

这样使用

@GET("/drivers/")
Call<List<Driver>> getDriverInfo(@Query("driver_id") int driverId);

关于java - 如何在Retrofit2中查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48738985/

相关文章:

java - 将外部类中的值设置为内部类中检索到的值

java - Android - 从下到上逐渐显示图像

java - 如何在android WebView 中访问.aspx 页面?

java - Android - RecyclerView 从中间而不是顶部开始

android - 使用 PUT 时的 RetroFit 2 Malforms URL

修改相对 URL 的尾部斜杠

java - 无法从我的 public void writeOutput 中获取 add.getSum() 等

java - 仅比较日期数据类型的 'Minute' 部分的 Hibernate Criteria

c# - 当按下确定按钮时关闭对话框

php - 应用程序在 JSON jparser 发出 http 请求时崩溃