改进:将运行时参数添加到接口?

anger

我想总是在我的Retrofit调用中添加一个参数。对于可以硬编码的值,我可以简单地使用

@POST("/myApi?myParam=myValue")

但是如果我要追加android.os.Build.MODEL怎么办?

@POST("/myApi?machineName="+ Build.MODEL)

不起作用。能够将网络调用的这一部分从实现代码中抽象出来会很有用。

编辑

我可以使用添加Build.MODEL到我的所有api调用中RequestInterceptor但是,它仍然使我无法选择如何将其选择性添加到我的某些api调用中,同时仍使用它RestAdapter

编辑2

修复了标题错误。

编辑3

当前实施:

RestAdapter restAdapter = new RestAdapter.Builder()
            .setEndpoint("myapi")
            .setRequestInterceptor(new RequestInterceptor() {
                @Override
                public void intercept(RequestInterceptor.RequestFacade request) {
                    request.addQueryParam("machineName", Build.MODEL);
                }
            })
            .build();
    API_SERVICE = restAdapter.create(ApiService.class);
杰克·沃顿

Build.MODEL不能在注释中使用,因为无法在编译时解析。它仅在运行时可用(因为它是从属性加载的)。

有两种方法可以完成此操作。第一种是使用RequestInterceptor您在问题中提到的。

第二种是@Query在方法上使用参数。

@POST("/myApi")
Response doSomething(@Query("machineName") String machineName);

这要求您Build.MODEL在调用API时通过如果需要,可以将Retrofit接口包装在一个API中,该接口对为您执行此操作的应用程序层更友好。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在运行时将模块添加到python

来自分类Dev

在运行时将项目添加到ComboBox?

来自分类Dev

在运行时将后缀添加到枚举

来自分类Dev

在AsyncTask运行时将文本添加到TextView

来自分类Dev

在运行时将PictureBox添加到窗体

来自分类Dev

在运行时将片段添加到TabLayout

来自分类Dev

将函数添加到事件运行时

来自分类Dev

将Nvidia运行时添加到Docker运行时

来自分类Dev

如何将运行时字符串参数添加到依赖关系解析链中?

来自分类Dev

如何将运行时字符串参数添加到依赖关系解析链中?

来自分类Dev

在运行时C#中将参数添加到XElment

来自分类Dev

将运行时JavaScript值添加到Liferay动态数据列表

来自分类Dev

在运行时将SubmitHandler添加到jQuery validate()中

来自分类Dev

在运行时将半透明覆盖层添加到活动背景

来自分类Dev

VBA:在运行时将文本框添加到用户窗体

来自分类Dev

如何在运行时将动画控制器添加到角色?

来自分类Dev

将N个项目添加到ArrayList的Big-O运行时

来自分类Dev

在Visual Basic中在运行时将图像添加到ImageList

来自分类Dev

如何在运行时将ContextMenu添加到按钮

来自分类Dev

Firemonkey:在运行时将子控件添加到TListViewItem

来自分类Dev

PyQt:在运行时将小部件添加到scrollarea

来自分类Dev

将OCMock添加到Xcode不会在运行时链接

来自分类Dev

在运行时将TypeConverter属性添加到枚举

来自分类Dev

将类路径容器添加到Eclipse插件的运行时

来自分类Dev

在运行时将字符添加到字符串末尾

来自分类Dev

在应用运行时将路由添加到Vue.js路由器

来自分类Dev

在应用程序运行时将视图添加到vuejs路由器

来自分类Dev

在运行时将显示属性添加到变量

来自分类Dev

在运行时将小部件添加到嵌套布局

Related 相关文章

  1. 1

    在运行时将模块添加到python

  2. 2

    在运行时将项目添加到ComboBox?

  3. 3

    在运行时将后缀添加到枚举

  4. 4

    在AsyncTask运行时将文本添加到TextView

  5. 5

    在运行时将PictureBox添加到窗体

  6. 6

    在运行时将片段添加到TabLayout

  7. 7

    将函数添加到事件运行时

  8. 8

    将Nvidia运行时添加到Docker运行时

  9. 9

    如何将运行时字符串参数添加到依赖关系解析链中?

  10. 10

    如何将运行时字符串参数添加到依赖关系解析链中?

  11. 11

    在运行时C#中将参数添加到XElment

  12. 12

    将运行时JavaScript值添加到Liferay动态数据列表

  13. 13

    在运行时将SubmitHandler添加到jQuery validate()中

  14. 14

    在运行时将半透明覆盖层添加到活动背景

  15. 15

    VBA:在运行时将文本框添加到用户窗体

  16. 16

    如何在运行时将动画控制器添加到角色?

  17. 17

    将N个项目添加到ArrayList的Big-O运行时

  18. 18

    在Visual Basic中在运行时将图像添加到ImageList

  19. 19

    如何在运行时将ContextMenu添加到按钮

  20. 20

    Firemonkey:在运行时将子控件添加到TListViewItem

  21. 21

    PyQt:在运行时将小部件添加到scrollarea

  22. 22

    将OCMock添加到Xcode不会在运行时链接

  23. 23

    在运行时将TypeConverter属性添加到枚举

  24. 24

    将类路径容器添加到Eclipse插件的运行时

  25. 25

    在运行时将字符添加到字符串末尾

  26. 26

    在应用运行时将路由添加到Vue.js路由器

  27. 27

    在应用程序运行时将视图添加到vuejs路由器

  28. 28

    在运行时将显示属性添加到变量

  29. 29

    在运行时将小部件添加到嵌套布局

热门标签

归档