Я использую 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();
}
});
}
Попробуйте так:
@FormUrlEncoded
@POST(Your URL like("http://sample/api/online"))
Call<ResponseBody> onLine(@Field("username") String username);
Это должно сработать ...
@jon not doe xx ты попробуй это?
Сделал это, но его вызов не обновил ошибку базы данных: 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`
Ваш URL-адрес POST
не содержит параметра, который вы пытаетесь установить.
@POST("offline}")
Call<OnlineStatus> offline(@Path("email") String email);
должен быть @POST("offline/{email}")
.
Замените ваш
@Path
на@Field