我在 Android 应用程序中使用 Retrofit 来获取 API 内容。目前我正在尝试在 API 中调用路由,但收到此错误消息:
java.lang.IllegalArgumentException: URL "online}" does not contain "{email}". (parameter #1)
如果我通过 Postman 调用 API:
> myapp.test/api/online
>
> Body:
>
> username: <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="720617010632061701065c1617" rel="noreferrer noopener nofollow">[email protected]</a>
它有效。
我的 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();
}
});
}
最佳答案
您的 POST
URL 不包含您尝试设置的参数。
@POST("offline}")
Call<OnlineStatus> offline(@Path("email") String email);
应为@POST("offline/{email}")
。
关于java - Retrofit 不包含参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51765057/