繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM