[英]raw string in post request body using retrofit
我想在post请求体中发送user:user。 我正在使用改造 lib。 请建议我。
我已经尝试过这样了
@POST(/login)
void login(@BODY String s,Callback<LoginResponse>)
并称之为
login("user:user",Callback<LoginResponse>)
对主体使用TypedString而不是String。
方法#1
考虑你的“user:user”似乎是一个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
您只需将Raw String作为表单数据发布,内容类型为: application / x-www-form-urlencoded ,只需要@FormUrlEncoded注释即可。
这是你的方法:
@FormUrlEncoded
@POST(/login)
void login(@Field("yourkey") String user,Callback<LoginResponse>)
你只需要将“ yourkey ”替换为api的密钥 - “ 用户 ”
将此称为:
String user = "john";
login(user,Callback<LoginResponse>)
参考 :
如何在Retrofit请求的主体中发布原始整个JSON
retrofit.http.Field
retrofit.http.FieldMap
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.