Я хочу получать уведомления от сервера, используя API.Я использую Retrofit2 для работы с API.
Проблема заключается в том, что при передаче параметра в метод POST я получаю сообщение «IllegalArgumentException URL не содержит параметр».
Параметрправильно и работает в iOS.Я хочу реализовать в Android.
Ниже приведен результат при отладке приложения.
Caused by: java.lang.IllegalArgumentException: URL
"notification/newnotification" does not contain "{userid}". (parameter #1)
Я попытался изменить параметры и тоже спросил разработчика API.Он говорит, что параметр правильный.
Это код для интерфейса API:
public interface API{
@FormUrlEncoded
@POST("notification/newnotification")
Call<ResponseBody> getUserNotification(
@Path("userid") int userid
);
}
RetrofitClient.java
public class RetrofitClient {
public static final String BASE_URL = "http://danceglobe.co/dance/api/";
private static RetrofitClient mInstance;
private Retrofit retrofit;
private RetrofitClient(){
retrofit = new Retrofit.Builder()
.baseUrl(BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
.build();
}
public static synchronized RetrofitClient getInstance(){
if(mInstance == null) {
mInstance = new RetrofitClient();
}
return mInstance;
}
public API getApi(){
return retrofit.create(API.class);
}
}
Вызов функции из MainActivity
private void getNotification(String currentUserId) {
Call<ResponseBody> call = RetrofitClient.getInstance().getApi().getUserNotification(Integer.parseInt(currentUserId));
call.enqueue(new Callback<ResponseBody>() {
@Override
public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {
if(!response.isSuccessful()){
Toast.makeText(MainActivity.this,response.message(),Toast.LENGTH_SHORT).show();
}
try {
String s = response.body().string();
Toast.makeText(MainActivity.this,s,Toast.LENGTH_SHORT).show();
} catch (IOException e) {
e.printStackTrace();
}
}
@Override
public void onFailure(Call<ResponseBody> call, Throwable t) {
Toast.makeText(MainActivity.this,t.getMessage(),Toast.LENGTH_SHORT).show();
}
});
}
Я хочу, чтобы он отвечал на некоторые данные.
Пожалуйста, помогите мне.Я застрял в этом за последние 2 дня.