java - 使用 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) {
}
});
解决方案
你必须这样做的方式是:拥有两个对象
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
推荐阅读
- python-3.x - Selenium - 文本属性仅在调试器检查后才可用
- amazon-web-services - 用于重负载的小型与大型机器的架构
- sorbet - vscode的插件
- java - StringRequest 参数有大小限制吗?
- android - 如何将多个图像上传的下载网址下载到 Firebase 存储
- unity3d - Unity在线棋盘游戏不同玩家的不同视图
- node.js - 我需要使用 nginx 服务器为 node.js 项目设置我的域
- c++ - 使用 std::vector 的 Eigen::MatrixXd.block 分配
- php - 从外键表 Laravel 中获取第一张图片
- c++ - 数据超过 7 位时发送两个字节?