我正在Android应用程序中使用Retrofit来处理Api。目前,我正在尝试在我的api中调用路由,但收到此错误消息:
java.lang.IllegalArgumentException:URL“在线”不包含 “{电子邮件}”。 (参数1)
如果我通过邮递员调用api:
> myapp.test/api/online
>
> Body:
>
> username: test@test.de
有效。
我的ApiService:
@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();
}
});
}
答案 0 :(得分:0)
尝试这种方式
@FormUrlEncoded
@POST(Your url like("http://sample/api/online"))
Call<ResponseBody> onLine(@Field("username") String username);
这应该可行...
答案 1 :(得分:0)
您的POST
网址不包含您要设置的参数
@POST("offline}")
Call<OnlineStatus> offline(@Path("email") String email);
应为@POST("offline/{email}")