Как передать строку в параметре «Body» Retrofit 2 в Android

@POST("api/login")
Call<ApiResponse> loginUser(@Body String user);

Здесь строка на самом деле является строкой JSON, т.е.

{"email":"[email protected]","password":"test"}

Не мог понять, что в этом не так. Либо строка снова конвертируется в json. Пожалуйста, предложите..

Это то, что я хочу сделать с моим запросом, как показано на рисунке.

введите описание изображения здесь


person Ranjana Dangol    schedule 29.01.2016    source источник
comment
это json ответ? Каково содержание ApiResponse?   -  person Blackbelt    schedule 29.01.2016
comment
Нет, это не ответ. Эти данные должны быть отправлены @body для получения ответа.   -  person Ranjana Dangol    schedule 29.01.2016
comment
Я не уверен, что вы можете отправить JSON таким образом. Я предполагаю, что это было бы преобразовано снова. Пожалуйста, посмотрите мой ответ, как я его использую.   -  person Rohit5k2    schedule 29.01.2016


Ответы (2)


Преобразование ваших данных в объект

public class Credentials
{
    public String email;
    public String password;
}

Установите данные в объект

Credentials loginCredentials = new Credentials();
loginCredentials.email = "[email protected]";
loginCredentials.password = "password";

Позвони своему апи

@POST("api/login")
Call<ApiResponse> loginUser(@Body Credentials credentials);
person Rohit5k2    schedule 29.01.2016
comment
Я не хочу использовать класс «модель данных» для отправки json в тело. Я ищу альтернативу. - person Ranjana Dangol; 29.01.2016
comment
@RanjanaDangol Хорошо, затем преобразуйте этот make JSON, используя GSON, и сохраните его в String. - person M D; 29.01.2016
comment
@RanjanaDangol: в вашем посте не упоминалось. Не берите в голову. :D - person Rohit5k2; 29.01.2016
comment
мм .. Я пытался с помощью Gson преобразовать строку в данные json, но это не работает. есть ли другой способ передать строку, чтобы она воспринималась как json для @BODY . - person Ranjana Dangol; 29.01.2016
comment
@RanjanaDangol: посмотрите, поможет ли это вам stackoverflow.com/questions/21398598/ - person Rohit5k2; 29.01.2016
comment
с модификацией 2 вам нужен класс модели. Нет обходного пути для этого. @ Rohit5k2, вы не возражаете, если я спрошу, почему Credentials можно сериализовать? - person Blackbelt; 29.01.2016
comment
@Blackbelt: Ничего особенного в этом вопросе. Если вы прочитаете мой комментарий к сообщению с вопросом, то вы обнаружите, что этот класс модели является своего рода копией класса модели моего собственного проекта (не вся часть). Мой проект требует, чтобы он был сериализуемым. : Д. Думаю, мне следует удалить его, потому что он не имеет отношения к этому вопросу. - person Rohit5k2; 29.01.2016
comment
У меня есть класс модели пользователя с другими элементами. Для этого запроса мне нужны только электронная почта и пароль. Есть ли у вас способ просто отправить два данных в пользовательском классе объектов как @BODY в модификации. - person Ranjana Dangol; 29.01.2016
comment
@RanjanaDangol: я не думаю, что это возможно. - person Rohit5k2; 29.01.2016
comment
Модель данных @RanjanaDangol — это то, что вам нужно, если вы не используете. значит ты отрицаешь элементарные факты :D - person silentsudo; 30.01.2016

@POST("api/login")
Call<ApiResponse> loginUser(@Body HashMap<String, String> user);

Мы можем использовать Hasmap вот так.

person Ranjana Dangol    schedule 29.01.2016