簡體   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