当前位置: 首页 > 面试题库 >

Android改装参数化@Headers

仲孙昊焱
2023-03-14
问题内容

我正在使用OAuth,每次发出请求时,都需要将OAuth令牌放在标头中。我看到了@Header注释,但是有没有一种方法可以对其进行参数化,以便我可以在运行时传递?

这是概念

@Header({Authorization:'OAuth {var}', api_version={var} })

您可以在运行时传递它们吗?

@GET("/users")
void getUsers(
    @Header("Authorization") String auth, 
    @Header("X-Api-Version") String version, 
    Callback<User> callback
)

问题答案:

除了使用@Header参数之外,我还希望使用RequestInterceptor来更新您的所有请求,而无需更改您的界面。使用类似:

RestAdapter.Builder builder = new RestAdapter.Builder()
    .setRequestInterceptor(new RequestInterceptor() {
        @Override
        public void intercept(RequestFacade request) {
            request.addHeader("Accept", "application/json;versions=1");
            if (isUserLoggedIn()) {
                request.addHeader("Authorization", getToken());
            }                    
        }
    });

p / s:如果使用Retrofit2,则应使用Interceptor而不是RequestInterceptor

由于RequestInterceptorRetrofit 2.0中不再提供



 类似资料:
  • 我正在使用一个查询参数来设置Google Maps API所需的值。 改装生成: 这会在需要时导致调用失败 我怎么解决这个?

  • 我想知道如何将response.body()作为参数传递,以便进一步处理它。因为现在我只能将其传递给Toast或text View的setText,它工作得很好。但是如果我尝试将其传递给将其保存为SharedPrefs或类似的函数,它只是传递一个空对象。我不明白为什么第一个有效,但第二个无效,有什么区别? 我的JSON响应正文如下所示: 我的Pojo是这样的: 我执行调用的函数(在点击登录按钮后调

  • 是否有任何方法可以使用Retrofit并将参数运算符符号替换为我自己的运算符(例如)。 这将创建 但我需要 谢啦

  • 我正在尝试使用改型2创建天气应用程序,现在我很难正确设置通话。 以下是有效的URL: 所以,我有我的API密钥和BASE URL是:http://api.openweathermap.org...这是我的Retrofit服务中的方法: 我得到的错误是: Java语言lang.IllegalArgumentException:URL查询字符串“q={city}/ 所以我试着这样做: 我得到了同样的错

  • 我想从带有的URL中获取RSS代码,如果我在get注释中静态输入URL,一切正常,但使用动态URL时,我会得到一个错误。 我的接口服务: 并调用getRss方法: 我得到以下错误: 注意:我将下面一行添加到中,但它不起作用

  • 问题内容: 大家好,我在android 4.3中有此代码,我现在正在使用改造,但是服务器向我抛出一条错误消息“输入内容不是有效的Base-64字符串,因为它包含非base 64字符,两个以上的填充字符,或填充字符中的非法字符。” 当我使用改造时 问题答案: 对于常规对象类型(包括),翻新将使用其来序列化值。在这种情况下,默认情况下会使用Gson将正文序列化为JSON。 为了上传要使用Base64编