首页 > 解决方案 > android:retrofit2 总是返回空体

问题描述

我可以调用 api 并且也可以在后端插入记录。但问题是,如果我的 api 返回带有 201 状态代码的 json 结果,则这些 json 结果不会显示在改造的响应正文中。

在下面的方法中,我得到 NULL response.body()。请帮我解决我的问题

我的片段

 GetPostDocumentDataService apiInterfaceDocument;
  ....
  ....
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 

 RetrofitInstance.getRetrofitInstanceDocument().create(GetPostDocumentDataService.class);
 .....   
 .....     

   call1.enqueue(new Callback<UsersResponseObj>() {
            @Override
            public void onResponse(Call<UsersResponseObj> call, Response<UsersResponseObj> response) { 
              Log.e("error", "-----------------" + response.body());// this NULL always , WHY?
             }

            @Override
            public void onFailure(Call<UsersResponseObj> call, Throwable t) {
                 
            }
        });

GetPostDocumentDataService.java

 public interface GetPostDocumentDataService { 

    @FormUrlEncoded
    @POST("/User/users")
    @Headers("Content-Type: application/x-www-form-urlencoded")
    Call<UsersResponseObj> addUser(@Field("googleUserId") String googleUserId, @Field("fullName") String fullName,
             @Field("emailAddress") String emailAddress, @Field("profilePictureUrl") String profilePictureUrl);
  }

RetrofitInstance.java

public class RetrofitInstance {
 
    private static final String DOCUMENT_BASE_URL = "http://fineinfo.mysite.com";//"http://192.168.1.102/webservicetraffic/";//
    private static Retrofit retrofit;
    private static Retrofit retrofit1;
    private static Retrofit documentRetrofit;

     

    /**
     * Create an instance of Document Retrofit object
     */
    public static Retrofit getRetrofitInstanceDocument() {
        if (documentRetrofit == null) {
            documentRetrofit = new retrofit2.Retrofit.Builder()
                    .baseUrl(DOCUMENT_BASE_URL)
                    .addConverterFactory(GsonConverterFactory.create())
                    .build();
        }
        return documentRetrofit;
    }
}

用户响应对象.java

import com.google.gson.annotations.SerializedName;

public class UsersResponseObj {
    @SerializedName("status")
    private  Boolean status;
    @SerializedName("message")
    private  String message;

    public Boolean getStatus() {
        return status;
    }

    public void setStatus(Boolean status) {
        this.status = status;
    }

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }
}

成功的 api 响应

状态码:201- 已创建

 {
    "status": true,
    "message": "User added"
}

标签: androidretrofit2

解决方案


推荐阅读