Retrofit 2禁用post参数的编码

Gre*_*Jay 6 post android retrofit retrofit2

我是初学者改造......我需要用简单的参数发送POST请求

名称:价值

  • login [name]:some-name
  • 登录[pw]:some-pw
  • 日期:2017-08-28T12:12:12 + 0200

所以,我试过了

@FormUrlEncoded
@POST(urlLogin)
Call<Login> signIn(@Field("login[name]") String name,
                    @Field("login[pw]") String pw,                          
                    @Field("date") String date);
Run Code Online (Sandbox Code Playgroud)

发送到服务器:

  • login%5Bname%5D:some-name
  • 登录%5Bpw%5D:some-pw
  • 日期:2017-08-28T21%3A11%3A57%2B0200

下一个

@FormUrlEncoded
@POST(urlLogin)
Call<Login> signIn(@Field(value = "login[name]", encoded = true) String name,
                   @Field(value = "login[pw]", encoded = true) String pw,                          
                   @Field(value = "date", encoded = true) String date);
Run Code Online (Sandbox Code Playgroud)

得到:

  • login%5Bname%5D:some-name
  • 登录%5Bpw%5D:some-pw
  • 日期:2017-08-28T19%3A59%3A04 + 0200

下一个

@FormUrlEncoded
@POST(urlLogin)
Call<Login> signIn(@FieldMap Map<String, String> fieldsMap);
Run Code Online (Sandbox Code Playgroud)

得到:

  • login%5Bname%5D:some-name
  • 登录%5Bpw%5D:some-pw
  • 日期:2017-08-28T21%3A11%3A57%2B0200

下一个

@FormUrlEncoded
@POST(urlLogin)
Call<Login> signIn(@FieldMap(encoded = true) Map<String, String> fieldsMap);
Run Code Online (Sandbox Code Playgroud)

得到:

  • login%5Bname%5D:some-name
  • 登录%5Bpw%5D:some-pw
  • 日期:2017-08-28T19%3A59%3A04 + 0200

拜托,帮帮我,我错了什么?日期有什么问题?为什么"+"被禁用编码而":"被编码?以及为什么参数名称被编码以及如何禁用它?