改造:如何使用Base64发布编码密码?

时间:2018-04-24 06:25:07

标签: base64 retrofit

我需要用电子邮件和密码发出请求。电子邮件和密码是发送到我的存储库类的字符串。密码需要用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属性?

1 个答案:

答案 0 :(得分:1)

这完全取决于您的API期望。 如果您的API需要编码为JSON / XML的对象,请将其发送到请求正文中。

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

举个例子:

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

但正如我所说,这一切都取决于API端点的期望。

我也不知道为什么你需要对密码进行Base64编码,它不会通过SSL在纯文本上添加任何额外的安全性,所以你也可以使用API​​文档仔细检查这一点。 / p>