java - 使用 Retrofit 2.0 在正文中发布请求 JSON
问题描述
我想向 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);
}
MainActivity 类
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);
}
推荐阅读
- linux - 如何从 mm_strucnt 和缓冲区中找到正确的 vm_area_struct
- c++ - 在 C++ 中跨基类和派生类重载
- python - 为什么我的 for 循环只遍历 1 个块 blob,即使 blob 容器中有 2 个?
- javascript - 从下拉列表中选择多个选项并将所选选项输入到输入字段
- java - JAX RS:通过 maven 生成和验证 OpenApi3
- arrays - 在解析对象数组时保存 Google App Script 状态并在稍后停止的地方继续
- javascript - 在构造函数 JavaScript 中分配默认值
- python - 我可以使用 plotly 子图在一个图形对象中显示不同的图表类型,例如雷达、旭日形、甜甜圈吗
- javascript - 文本显示并在 JavaScript 中再次消失
- java - 当我询问一个数组的长度时,我在 java 中得到一个 ClassCastException,我该如何解决这个问题?