【问题标题】:Retrofit: How to post encoded password with Base64?改造:如何使用 Base64 发布编码密码?
【发布时间】:2018-04-24 06:25:07
【问题描述】:

我需要使用电子邮件和密码提出请求。电子邮件和密码是发送到我的存储库类的字符串。并且密码需要用Base64编码。

我正在使用 Retrofit 2。

我知道我需要使用RequestBody 类,但我怎样才能提出请求?

这是来自 Rest 接口的代码:

@POST("login")
Call<String> login(
    @Body RequestBody payload
);

在存储库中,我有这个来编码密码:

String encodedPassword = Base64.encodeToString(password.getBytes(), Base64.NO_WRAP);

但我需要使用 email 和 encodedPassword 变量初始化 requestBody 以发出请求。

Call<String> call = getApi().login(requestBody);

这真的是正确的方法吗?

requestBody属性是如何初始化的?

【问题讨论】:

    标签: base64 retrofit


    【解决方案1】:

    这完全取决于您的 API 期望什么。 如果您的 API 需要一个编码为 JSON/XML 的对象,您可以在请求正文中发送它。

    对于登录凭据,最常见的是将它们作为 FormUrlEncoded 数据发送。

    举个例子:

    @POST("/posts")
    @FormUrlEncoded
    Call<String> login(@Field("email") String email,
                       @Field("password") String password);
    

    但正如我所说,这完全取决于 API 端点的预期。

    我也不明白为什么您需要对密码进行 Base64 编码,它不会为 SSL 上的纯文本添加任何额外的安全性,因此您也可以使用 API 文档仔细检查这一点。

    【讨论】:

    • 伙计,非常感谢。这正是我需要的。我不知道为什么有时我们会尝试最努力的方式。 =/ 实际上,Base64 并没有增加太多的安全性。这不适用于生产应用程序。再次感谢您。
    猜你喜欢
    • 2020-11-18
    • 1970-01-01
    • 2019-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多