我想在发布请求正文中发送用户:user。我正在使用改装 lib。请建议我。
我已经尝试过这样的
@POST(/login)
void login(@BODY String s,Callback<LoginResponse>)
并称之为
login("user:user",Callback<LoginResponse>)
答案 0 :(得分:6)
对主体使用TypedString而不是String。
答案 1 :(得分:1)
方法#1
考虑您的用户:用户&#34;似乎是一个JsonObject。所以请发布JsonObject而不是Raw String。
您可以构建一个POJO类:
public class User{
public final String user;
User(String user) {
this.user = user;
}
}
你的方法是这样的:
@POST(/login)
void login(@BODY User user,Callback<LoginResponse>)
并将其称为:
User user = new User("john");
login(user,Callback<LoginResponse>)
由于Retrofit默认使用Gson,因此User实例将被序列化为JSON作为请求的唯一主体。默认使用content-type: application / json
方法#2
您只需将原始字符串作为表单数据发布,内容类型为: application / x-www-form-urlencoded ,只需要 @FormUrlEncoded 注释。
这是你的方法:
@FormUrlEncoded
@POST(/login)
void login(@Field("yourkey") String user,Callback<LoginResponse>)
你只需要替换&#34; yourkey &#34;到你的api的关键 - &#34; 用户&#34;
将此称为:
String user = "john";
login(user,Callback<LoginResponse>)
<强>参考强>:
How to POST raw whole JSON in the body of a Retrofit request
retrofit.http.Field
retrofit.http.FieldMap