改造返回空列表

时间:2019-07-15 05:25:02

标签: java android

我正在尝试列出来自服务器的呼叫,但该呼叫为空。在邮递员上,我收到了所有列表,但无法在android上显示。

enter image description here

我有一个Model类:

public class Model {
@SerializedName("Title")
private String Title;
@SerializedName("Price")
private BigDecimal Price;

以及从我的界面拨打电话:

@GET("api/Host/GetAllEvents")
Call<List<Model>> ListAllEvents();

我的服务等级:

@Override
public void getAllEvents(onFinishedListener onFinishedListener) {
    Call<List<Model>> call = retrofitEndpoint.ListAllEvents();
    call.enqueue(new Callback<List<Model>>() {
        @Override
        public void onResponse(@NotNull Call<List<Model>> call, @NotNull Response<List<Model>> response) {
            onFinishedListener.onFinished(response.body());
        }

        @Override
        public void onFailure(@NotNull Call<List<Model>> call, @NotNull Throwable t) {
            onFinishedListener.onError(t);
        }
    });
}

我收到列表大小,但属性为null。

还有我的Retrofit客户类:

 private static final String BASE_URL = "http://192.168.0.101:3000";
private static Retrofit retrofit = null;

private static Gson gson = new GsonBuilder()
        .create();



public static Retrofit getClient() {
    if (retrofit == null) {
        retrofit = new Retrofit.Builder()
                .baseUrl(BASE_URL)
                .addConverterFactory(GsonConverterFactory.create(gson))
                .client(defaultClient())
                .build();
    }
    return retrofit;
}

private static OkHttpClient  defaultClient() {
    return new OkHttpClient().newBuilder()
            .connectTimeout(15, TimeUnit.SECONDS).
                    readTimeout(15, TimeUnit.SECONDS).
                    writeTimeout(15, TimeUnit.SECONDS).
                    addInterceptor(chain -> {
                        Request newRequest  = chain.request().newBuilder()
                                .addHeader("Authorization", "Bearer " + Hawk.get("t"))
                                .build();
                        return chain.proceed(newRequest);
                    }).build();
}

3 个答案:

答案 0 :(得分:4)

您的模型课:

public class Model {
@SerializedName("Title")
private String Title;
@SerializedName("Price")
private BigDecimal Price;

我看到您的序列化名称在这里大写,并且在json响应中都是小写。

将它们更改为小写,然后重试:

public class Model {
@SerializedName("title")
private String Title;
@SerializedName("price")
private BigDecimal Price;

答案 1 :(得分:0)

尝试一下,这样想

更改

@GET("api/Host/GetAllEvents")

@GET("/api/Host/GetAllEvents")

private static final String BASE_URL = "http://192.168.0.101:3000";

private static final String BASE_URL = "http://192.168.0.101:3000/";

答案 2 :(得分:0)

<de.hdodenhof.circleimageview.CircleImageView android:id="@+id/image" android:layout_width="150dp" android:layout_height="150dp" android:layout_centerHorizontal="true" android:layout_marginTop="100dp" android:src="@drawable/profileuser" app:civ_border_color="@color/white" app:civ_border_width="2dp" /> 更改为@SerializedName("Title")

也将@SerializedName("title")更改为@SerializedName("Price")

因为标题@SerializedName("price")中的价格是小写。 但是,如果您不使用JSON批注,则可以使用与@SerializedName的名称相同的变量。

JSON

将基本URL更改为

public class Model {
  private String title;
  private BigDecimal price;
}
相关问题