使用改造的邮政请求正文中的原始字符串

时间:2014-11-19 11:57:23

标签: java retrofit

我想在发布请求正文中发送用户:user。我正在使用改装 lib。请建议我。

我已经尝试过这样的

@POST(/login)
void login(@BODY String s,Callback<LoginResponse>)

并称之为

login("user:user",Callback<LoginResponse>)

2 个答案:

答案 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