Java 改装不包含参数

Java 改装不包含参数,java,android,retrofit,retrofit2,Java,Android,Retrofit,Retrofit2,我正在我的Android应用程序中对API进行改造。目前我正在尝试调用API中的路由,但收到以下错误消息: java.lang.IllegalArgumentException:URL“online}”不包含 “{email}”。(参数#1) 如果我通过邮递员调用API: > myapp.test/api/online > > Body: > > username: test@test.de 它起作用了 我的API服务: @POST("online}&q

我正在我的Android应用程序中对API进行改造。目前我正在尝试调用API中的路由,但收到以下错误消息:

java.lang.IllegalArgumentException:URL“online}”不包含 “{email}”。(参数#1)

如果我通过邮递员调用API:

> myapp.test/api/online
>
> Body:
>
> username: test@test.de
它起作用了

我的API服务:

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

@POST("offline}")
Call<OnlineStatus> offline(@Path("email") String email);
@POST(“在线”)
联机呼叫(@Path(“电子邮件”)字符串电子邮件);
@POST(“离线}”)
离线调用(@Path(“email”)字符串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();
        }
    });
}
调用setStatusOnline;
public void setUserStatusToOnline(字符串电子邮件){
setStatusOnline=service.online(电子邮件);
setStatusOnline.enqueue(新的改型2.Callback(){
@凌驾
公共void onResponse(呼叫,改装2.响应){
Log.e(“onlineStatusResponse”,String.valueOf(response));
if(response.issusccessful()){
Log.e(“在线状态”,“设置为在线成功”);
}否则{
Log.e(“联机状态”,“设置为联机错误”);
}
}
@凌驾
失败时公共无效(调用调用,可丢弃的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);
@FormUrlEncoded
@发布(你的URL像(“http://sample/api/online"))
联机呼叫(@Field(“用户名”)字符串用户名);

这应该可以工作…

您的
POST
URL不包含您试图设置的参数

@POST("offline}")
Call<OnlineStatus> offline(@Path("email") String email);
@POST(“脱机”)
离线调用(@Path(“email”)字符串email);

应该是
@POST(“offline/{email}”)

@Field
@jon not doe xx替换你的
@Path
你是不是在尝试这个呢?这样做了,但它没有更新数据库错误:
E/onlineStatusResponse:Response{protocol=http/1.1,code=500,message=Internal Server error,url=http://myurl.io/api/online}
`E/onlineStatus:设置为联机错误`