首页 > 解决方案 > 使用 retrofit2 发送此 formjson

问题描述

我有这个 JSON 正文,我想将它发送到服务器。

{
   "username" : "aa",
   "email" : "aa@email.com",
   "telephone" : 1234565165,
   "plainPassword" : {
      "first" : "aa",
      "second" : "aa"
   }
}

我使用这个实体:

用户.java

public class User {

    private int id;
    private String username;
    private long telephone;
    private String email;
    private String image_name;
    private int activation;
    private int status;
    private String randomcode;

}

普通密码.java

public class PlainPassword {

    private String first;
    private String second;

}

我的 API 接口类

@POST("registerREST")
Call<Object> addUser(@Body Object user);

我像这样使用它:

Call<Object> call = services.addUser(u);

call.enqueue(new Callback<Object>() {

    @Override
        public void onResponse(Call<Object> call, Response<Object> response) {

        if(response.isSuccessful()){

                LinkedTreeMap treemap = (LinkedTreeMap) response.body();
                RegisterResponse review = new RegisterResponse();
                double d = Double.parseDouble(treemap.get("userId").toString()) ;
                review.setUserId((int) d );

                    if(review.getUserId() == 0) {

                    } else {

                    }
                }
        }


        @Override
        public void onFailure(Call<Object> call, Throwable t) {

        }

});

标签: javaandroidretrofit2

解决方案


你必须这样做的方式是:拥有两个对象

public class Example {

@SerializedName("username")
@Expose
private String username;
@SerializedName("email")
@Expose
private String email;
@SerializedName("telephone")
@Expose
private Integer telephone;
@SerializedName("plainPassword")
@Expose
private PlainPassword plainPassword;

public String getUsername() {
return username;
}

public void setUsername(String username) {
this.username = username;
}

public String getEmail() {
return email;
}

public void setEmail(String email) {
this.email = email;
}

public Integer getTelephone() {
return telephone;
}

public void setTelephone(Integer telephone) {
this.telephone = telephone;
}

public PlainPassword getPlainPassword() {
return plainPassword;
}

public void setPlainPassword(PlainPassword plainPassword) {
this.plainPassword = plainPassword;
}

}


import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;

public class PlainPassword {

@SerializedName("first")
@Expose
private String first;
@SerializedName("second")
@Expose
private String second;

public String getFirst() {
return first;
}

public void setFirst(String first) {
this.first = first;
}

public String getSecond() {
return second;
}

public void setSecond(String second) {
this.second = second;
}

}

然后你需要以这种格式发送它:

@POST("registerREST")
Call<ReturningObject> addUser(@Body Example user);

如果您对此有更多疑问,我邀请您查看此网站:https ://futurestud.io/tutorials/retrofit-getting-started-and-android-client


推荐阅读