Как разместить необработанный объект JSON с библиотекой RETROFIT - PullRequest
1 голос
/ 01 июля 2019

Я пытался использовать Postman и тестировать с тем же объектом JSON, и он работает совершенно нормально, но он не работает, когда я использую библиотеку модернизации.

Я пытался поместить объект JSON в класс Pojo, ноэто все еще не работает.

КЛАСС УВЕДОМЛЕНИЙ ОБСЛУЖИВАНИЯ

public interface NotificationService {
    @Headers({
            "Content-Type:"+ApiConstants.CONTENT_TYPE,
            "Authorization:"+ApiConstants.SERVER_KEY
    })
    @POST(ApiConstants.SEND)
    Call<ResponseBody> sendNotification(@Body String body);

}

КЛАСС АПИКОНСТАНЦОВ

public class ApiConstants {
    public static final String SERVER_KEY = "key=mykey";
    public static final String SEND = "send";
    public static final String BASE_URL = "https://fcm.googleapis.com/fcm/";
    public static final String CONTENT_TYPE = "application/json";
    public static final String NOTIFICATION = "{\n" +
            "    \"to\": \"/topics/MISSING\",\n" +
            "    \"data\": {\n" +
            "        \"extra_information\": \"This is some extra information\"\n" +
            "    },\n" +
            "    \"notification\": {\n" +
            "        \"title\": \"She pressed the button\",\n" +
            "        \"text\": \"She misses you\",\n" +
            "        \"click_action\": \"MAINACTIVITY\"\n" +
            "    }\n" +
            "}";
}

ОСНОВНАЯ ДЕЯТЕЛЬНОСТЬ

private void buttonIsPressed() {
        RetrofitClient retrofitClient;
        retrofitClient = RetrofitClient.getInstance();


        Call<ResponseBody> call = retrofitClient.getNotificationService().sendNotification(ApiConstants.NOTIFICATION);

        call.enqueue(new Callback<ResponseBody>() {
            @Override
            public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {
                ResponseBody result = response.body();
                String gs = new Gson().toJson(result);
                Log.d("MainActivity", "response = " + gs);
            }

            @Override
            public void onFailure(Call<ResponseBody> call, Throwable t) {
                Log.d(TAG, "//onFailure");
            }
        });
    }

Я пытаюсьотправлять уведомления некоторым конкретным пользователям при нажатии кнопки.Из того, что я могу сказать, единственное, что не работает, это то, что я даю неправильный ввод для тела при использовании Call<ResponseBody> sendNotification(@Body String body)

1 Ответ

0 голосов
/ 01 июля 2019

вы должны создать модель класса

public class MyRequestBodyModel {

    @SerializedName("id")
    private int id;

    @SerializedName("name")
    private String name;

}

создайте новый экземпляр MyRequestBodyModel и передайте ваше значение

MyRequestBodyModel model = new MyRequestBodyModel();
model.id = 1;
model.name = "john";

установить экземпляр этой модели в качестве аргументов для модификации метода вызова

Call<ResponseBody> sendNotification(@Body MyRequestBodyModel model);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...