[英]Post request JSON in body with Retrofit 2.0
我想向 API 发送一个 JSON 参数,我实现的目标是这样的:
{"v1" : "username", "v2" : "password"}
所以基本上我发送 2 个 JSON 对象,以“v1”和“v2”作为参数。 但我想要实现的是发送这样的参数:
{"username" : "password"}
我不知道该怎么做。 这是我现在的代码:
POJO类
class Post {
private String v1;
private String v2;
private PostSuccess SUCCESS;
public Post(String name, String password) {
this.v1 = name;
this.v2 = password;
}
}
class PostSuccess {
@SerializedName("200")
private String resp;
private String result;
public String getResp() {
return resp;
}
public String getResult() {
return result;
}
}
POST接口
public interface JsonPlaceHolderApi {
@POST("ratec")
Call<Post> createPost(@Body Post post);
}
主活动类
private void createPost() {
final Post post = new Post("anthony", "21.000008", "72", "2");
Call<Post> call = jsonPlaceHolderApi.createPost(post);
call.enqueue(new Callback<Post>() {
@Override
public void onResponse(Call<Post> call, Response<Post> response) {
if (!response.isSuccessful()) {
textViewResult.setText("Code: " + response.code());
return;
}
Post postResponse = response.body();
String content = "";
content += "Code : " + response.code() + "\n";
textViewResult.setText(content);
}
@Override
public void onFailure(Call<Post> call, Throwable t) {
textViewResult.setText(t.getMessage());
}
});
}
如您所见,这是我发送的参数:
final Post post = new Post("name", "password");
Call<Post> call = jsonPlaceHolderApi.createPost(post);
在 POJO 类中,我已经声明了“v1”和“v2”,所以不是发送这个:
{"username" : "password"}
我发送这个:
{"v1" : "username", "v2" : "password"}
我感谢您的帮助和建议。 谢谢!
您可以直接使用@Body 中的地图并访问地图的键和值,如下所示:
public interface JsonPlaceHolderApi {
@POST("ratec")
Call<Post> createPost(@Body Map<String,String> post);
}
class Post {
@JsonProperty("username")
private String v1;
@JsonProperty("password")
private String v2;
private PostSuccess SUCCESS;
public Post(String name, String password) {
this.v1 = name;
this.v2 = password;
}
}
使用JsonProperty
根据您需要的方式自定义 json 变量。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.