首页 > 解决方案 > 当 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();

                    }
                });

标签: androidretrofitresponse

解决方案


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

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

推荐阅读