Модернизация не содержит параметра

Я использую Retrofit в своем приложении для Android для работы с API. В настоящее время я пытаюсь вызвать маршрут в своем API, но получаю следующее сообщение об ошибке:

java.lang.IllegalArgumentException: URL "online}" does not contain "{email}". (parameter #1)

Если я вызываю API через Postman:

> myapp.test/api/online
>
> Body:
>
> username: [email protected]

Оно работает.

Моя служба API:

@POST("online}")
Call<OnlineStatus> online(@Path("email") String email);

@POST("offline}")
Call<OnlineStatus> offline(@Path("email") String email);

Вызов API:

Call<OnlineStatus> setStatusOnline;

public void setUserStatusToOnline(String email) {
    setStatusOnline = service.online(email);
    setStatusOnline.enqueue(new retrofit2.Callback<OnlineStatus>() {
        @Override
        public void onResponse(Call<OnlineStatus> call, retrofit2.Response<OnlineStatus> response) {
            Log.e("onlineStatusResponse", String.valueOf(response));
            if (response.isSuccessful()) {
                Log.e("onlineStatus", "Set to online success");
            } else {
                Log.e("onlineStatus", "Set to online error");
            }
        }
        @Override
        public void onFailure(Call<OnlineStatus> call, Throwable t) {
            Toasty.error(LoginActivity.this, "error.", Toast.LENGTH_SHORT, true).show();
        }
    });
}

Замените ваш @Path на @Field

Devil10 09.08.2018 13:04
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
2
1
2 571
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Попробуйте так:

@FormUrlEncoded
@POST(Your URL like("http://sample/api/online"))
Call<ResponseBody> onLine(@Field("username") String username);

Это должно сработать ...

@jon not doe xx ты попробуй это?

Bhuvaneshwaran Vellingiri 09.08.2018 14:06

Сделал это, но его вызов не обновил ошибку базы данных: E/onlineStatusResponse: Response{protocol=http/1.1, code=500, message=Internal Server Error, url=http://myurl.io/api/online} `E / onlineStatus: Set to online error`

Jon not doe xx 10.08.2018 17:02

Ваш URL-адрес POST не содержит параметра, который вы пытаетесь установить.

@POST("offline}")
Call<OnlineStatus> offline(@Path("email") String email);

должен быть @POST("offline/{email}").

Другие вопросы по теме