[英]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.