android - 当 http 代码为 200 时,Retrofit response.body() 为空
问题描述
我可以发布我的对象,状态码为 200,但 response.body() 为空。为什么这是 null ?当我发送数据时,条形码为空。返回时条形码必须有一个值。因为我需要返回值。我怎样才能得到返回值?谢谢你。
这是我的对象。
EtiketItemPostModel :
public class EtiketItemPostModel {
List<EtiketItemModels> EtiketItemModels;
private String FaturaNo;
private String Barkod;
EtiketItemPostModel(List<EtiketItemModels> EtiketItemModels, String
FaturaNo,String Barkod) {
this.FaturaNo = FaturaNo;
this.EtiketItemModels = EtiketItemModels;
this.Barkod= Barkod;
}
public String getFaturaNo() {
return FaturaNo;
}
public List<EtiketItemModels> getEtiketItem_models() {
return EtiketItemModels;
}
public String getBarkod(){
return Barkod;
}
}
EtiketItemModels :
public class EtiketItemModels {
String StokKodu;
String StokAdi;
String Unit;
double Qtty;
public EtiketItemModels(String StokKodu, String StokAdi, String Unit,
double Qtty) {
this.StokKodu = StokKodu;
this.StokAdi = StokAdi;
this.Unit = Unit;
this.Qtty = Qtty;
}
public String getStokKodu() {
return StokKodu;
}
public String getStokAdi() {
return StokAdi;
}
public String getUnit() {
return Unit;
}
public double getQtty() {
return Qtty;
}
}
界面 :
public interface Etiket_Post {
@POST("api/r_etiket")
Call<EtiketItemPostModel> post_etiket(@Body EtiketItemPostModel items);
}
改造电话:
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("myURL")
.addConverterFactory(ScalarsConverterFactory.create())
.addConverterFactory(GsonConverterFactory.create())
.build();
Etiket_Post etiket_post = retrofit.create(Etiket_Post.class);
ArrayList<EtiketItemModels> items = new ArrayList<>();
for (int e = 0; e < okutulan_list.size(); e++) {
items.add(new EtiketItemModels(
okutulan_list.get(e).STOK_KODU,
okutulan_list.get(e).STOK_ADI,
okutulan_list.get(e).OlcuBrim,
okutulan_list.get(e).STHAR_GCMIK));
}
String faturano = FileId;
EtiketItemPostModel etiketPostClass = new EtiketItemPostModel(items, FileId, "");
Call<EtiketItemPostModel> call = etiket_post.post_etiket(etiketPostClass);
call.enqueue(new Callback<EtiketItemPostModel>() {
@Override
public void onResponse(Call<EtiketItemPostModel> call, Response<EtiketItemPostModel> response) {
if (response.isSuccessful()) {
String test = response.body().getBarkod();
}
}
@Override
public void onFailure(Call<EtiketItemPostModel> call, Throwable t) {
String tesT = t.getMessage();
}
});
解决方案
我找到了解决方案。我改变了我的界面类。我调用了 anObject
但返回值是 a String
。我期望一个字符串值,所以我的新接口类是:
@POST("api/r_etiket")
Call<String> post_etiket(@Body EtiketItemPostModel items);
推荐阅读
- python - 使用 python 将上传进度添加到 Google Drive 脚本
- javascript - setInterval 不重复单词更改
- c# - EF 无法识别新属性
- android - 寻找 emoji 库或 SDK for android 在键盘中使用它
- angular - 为什么不在 Angular 中直接与 DOM 交互?
- kubernetes - kubernetes 在 pod 中使用具有 root 用户的 nfs 持久卷
- docker - 是否可以在容器内获得指定的 docker ram 限制?
- python - tensorflow - tf.data.Dataset 在批处理之前随机跳过样本以获得不同的批次
- confluence - 使用变量并在内容中显示
- java - 带有背景加载的imageview中的Javafx中心图像