我正在尝试列出来自服务器的呼叫,但该呼叫为空。在邮递员上,我收到了所有列表,但无法在android上显示。
我有一个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();
}
答案 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;
}