java - Retrofit 不包含参数

标签 java android retrofit retrofit2

我在 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/

相关文章:

java - 如何保持多个按钮的无限循环?

java - 样式标签字体大小

java - Java 中的 HTTP POST 请求 .setRequestMethod() 不执行任何操作

java - 当我使用改造时,由 : java. lang.NoSuchFieldError : com. squareup.okhttp.internal.http.HttpMethod.METHODS 引起

retrofit - 如何防止 Java RetroFit 因 401 未经授权错误而导致我的应用程序崩溃?

java - 仅播放视频而不播放声音。这是为什么 ?

java - 单击并填充另一个时如何添加另一个 EditText ( Android )

android - FFMpeg Mobile 视频编码卡顿

android - 尝试从 v 18.x 更新 Eclipse ADT - v 20.0.0 或更高版本

android - 如何在 OnResponse 函数之外使用 Retrofit 响应?