簡體   English   中英

使用 Retrofit 2.0 在正文中發布請求 JSON

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM