首页 > 解决方案 > 如何使用改造获取响应作为对象将发布数据 json 发送到 api

问题描述

邮递员说明:

邮递员描述

界面:

public interface PostService {
    @Headers("Content-Type: application/json")
    @FormUrlEncoded
    @POST("/user/login")
    Call<User> login(@Body User user);
}

调用函数:

User user = new User("student", "student@gmail.com");
Call<User> noticeList = RetrofitAPI.getService().login(user);

noticeList.enqueue(new Callback<User>() {
    @Override
    public void onResponse(Call<User> call, Response<User> response) {
        Log.i("postdata", "v =" + response.body().getId());
    }

    @Override
    public void onFailure(Call<User> call, Throwable throwable) {
        Toast.makeText(ActivityLogin.this, "Server taking time try refreshing", Toast.LENGTH_SHORT).show();
    }
});

我们如何将 json post 数据发送到服务器?

标签: androidretrofit2gson

解决方案


首先,创建 Pojo 类:

public class SubscriptionResponseModel {

    @SerializedName("mNo")
    @Expose
    private String mNo;

    @SerializedName("pId")
    @Expose
    private String pId;
    @SerializedName("status")
    @Expose
    private String status;

    public String getPId() {
        return pId;
    }

    public void setPId(String pId) {
        this.pId = pId;
    }

    public String getStatus() {
        return status;
    }

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

}

然后,创建接口:

@POST("subs?")
@FormUrlEncoded
Call<SubscriptionResponseModel> setSubs(@Field("pId") String pId,
                                        @Field("mNo") String mNo,
                                        @Field("status") String status);

获取改造实例:

private static Retrofit getSubsRetrofitInstance() {
    return new Retrofit.Builder()
            .baseUrl(GlobalVar.BASE_URL) 
            .addConverterFactory(GsonConverterFactory.create()).build();
}

getApiService

public static ApiService getSubsApiService() {
    return getSubsRetrofitInstance().create(ApiService.class);
}

现在,调用函数:

ApiService apiService = getSubsApiService();
Call<SubscriptionResponseModel> subcriptionResponse = apiService.setSubs("1", "1", "y");

subcriptionResponse.enqueue(new Callback<SubscriptionResponseModel>() {
    @Override
    public void onResponse(Call<SubscriptionResponseModel> call, Response<SubscriptionResponseModel> response) {
        if (response.isSuccessful()) {
            /////print success message
        }
    }

    @Override
    public void onFailure(Call<SubscriptionResponseModel> call, Throwable t) {
        Log.d("error", t.getMessage());
    }
});

推荐阅读