当http代码为200时Retrofit response.body()为null

时间:2019-07-19 13:24:52

标签: android retrofit response

我可以发布对象,状态代码为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();

                    }
                });

1 个答案:

答案 0 :(得分:0)

我找到了解决方案。我更改了接口类。我调用了Object,但返回值为String。我期望一个字符串值,所以我的新接口类是:

@POST("api/r_etiket")
Call<String> post_etiket(@Body EtiketItemPostModel items);