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