java - Retrofit:如何发送带有常量字段的 POST 请求?

标签 java android http http-post retrofit

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

@POST("/token")
@FormUrlEncoded
void extendSession(@Field("refresh_token")final String refreshToken);

但这个请求还应该发送服务器请求的一些常量值,例如client_idclient_secretgrant_type,这些都是常量,不应该成为应用程序 API 的一部分。

执行此操作的最佳方法是什么?

最佳答案

这取决于您的方法。如果您有常量,则可以构建调用所需值的默认映射。 @FieldMap 将适合构建包含所有必填字段的 map

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);

关于java - Retrofit:如何发送带有常量字段的 POST 请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26697054/

相关文章:

java - 使用 -cp 执行类但未找到类

java - 保存设置按钮并返回上一个 Activity

java - 对象不是有效的 JSONArray

java - 如何在 Android 中从 sqlite 数据库存储和检索日期?

Android 应用程序崩溃 - 空指针异常

java - 如何根据输入的文本向JtextPane添加规则

android - 使用多个脏矩形更新 SurfaceView

c++ - HTTP 代理检测 HTTP 客户端断开连接

objective-c - GCDAsyncUdpSocket 多播获取 HTTP 412 响应

python - IBM Speech to text api,无法进行 HTTP POST 调用