改造不包含参数

时间:2018-08-09 10:52:11

标签: java android retrofit retrofit2

我正在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();
        }
    });
}

2 个答案:

答案 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}")