改造:如何使用常量字段发送POST请求?

Avi*_*ron 14 java android http http-post retrofit

我想发送一个带有一个实际参数的简单POST请求:

@POST("/token")
@FormUrlEncoded
void extendSession(@Field("refresh_token")final String refreshToken);
Run Code Online (Sandbox Code Playgroud)

但这一要求也应该发送服务器,例如要求一些常数值client_id,client_secretgrant_type这是不变的,不应该是应用程序API的一部分.

做这个的最好方式是什么?

Nik*_*ski 9

这是你的方法的问题.如果您有常量,则可以构建调用所需的默认值映射.@FieldMap适用于构建包含所有必填字段的地图

private void extendSession(String token){
   Map params = buildDefaultParams();
   params.put("refreshToken", token);
   getRestAdapter().create(MyApi.class).extendsSession(params);
}
private Map buildDefaultParams(){
   Map defaults = new HashMap();
   defaults.put("client_id", CLIENT_ID);
   defaults.put("client_secret", CLIENT_SECRET);
   defaults.put("grant_type", GRANT_TYPE);
   return defaults;
}
  /**then you change your interface to this **/ 
    @POST("/token")
    @FormUrlEncoded
    void extendSession(@FieldMap() Map refreshToken);
Run Code Online (Sandbox Code Playgroud)

  • 这就是我最终做的,虽然它不是一个"优雅"的解决方案. (4认同)