如何使用改进获取响应作为对象将发布数据json发送到api

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用改进获取响应作为对象将发布数据json发送到api相关的知识,希望对你有一定的参考价值。

邮递员描述:

Postman description

接口:

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数据发送到服务器?

答案

您需要将Call<User> login(@Body User user);替换为您的响应模型类,如Call<YOURRESPONSEMODEL> login(@Body User user);,并根据更改您的call function。要创建响应模型,请使用邮递员的响应并创建模型here

另一答案

首先,创建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());
    }
});

以上是关于如何使用改进获取响应作为对象将发布数据json发送到api的主要内容,如果未能解决你的问题,请参考以下文章

如何将java json对象数据发送到android api请求

如何将模型的(json)值发送到视图控制器?

Dojo xhrget 响应

如何在 Vue.js 2 中发送 JSON 数据作为响应?

iPhone- 在 POST 中将 JSON 对象发送到 PHP 服务器并从服务器获取响应

如何使用 MySQL 在 Spring Boot REST API 中放置和获取任何格式的 JSON 对象?