如何使用Retrofit为所有请求定义标头?

费尔南多·派瓦(FernandoPaiva):

我正在寻找一种解决方案,以定义在所有请求中使用的唯一标头。今天,我习惯于@Header每个请求的传递都像参数一样,但是我只想定义可在所有请求中使用的标头,而无需像参数那样传递,例如,将标头固定在我的请求上@GET@POST

今天我用这个。请注意,@GET我需要将每个请求定义Header作为参数。

//interface
@GET("/json.php")
void getUsuarioLogin(   
                        @Header("Authorization") String token,
                        @QueryMap Map<String, String> params,
                        Callback<JsonElement> response
                    );

//interface
@GET("/json.php")
void addUsuario(    
                        @Header("Authorization") String token,
                        @QueryMap Map<String, String> params,
                        Callback<JsonElement> response
                    );


//using
public void getUsuarioLogin(){
        Map<String, String> params = new HashMap<String, String>();         
        params.put("email", "[email protected]");
        params.put("senha", ConvertStringToMD5.getMD5("mypassword"));           

        RestAdapter adapter = new RestAdapter.Builder()
                                .setLogLevel(RestAdapter.LogLevel.FULL)
                                .setEndpoint(WebServiceURL.getBaseWebServiceURL())                              
                                .build();

        UsuarioListener listener = adapter.create(UsuarioListener.class);
        listener.getUsuarioLogin(
                                      //header  
                                      "Basic " + BasicAuthenticationRest.getBasicAuthentication(),
                                      params, 
                                      new Callback<JsonElement>() {         
            @Override
            public void success(JsonElement arg0, Response arg1) {
                Log.i("Usuario:", arg0.toString() + "");                
            }

            @Override
            public void failure(RetrofitError arg0) {
                Log.e("ERROR:", arg0.getLocalizedMessage());

            }
        }); 

    }





//using
    public void addUsuario(){
            Map<String, String> params = new HashMap<String, String>();
            params.put("name", "Fernando");
            params.put("lastName", "Paiva");

            RestAdapter adapter = new RestAdapter.Builder()
                                    .setLogLevel(RestAdapter.LogLevel.FULL)
                                    .setEndpoint(WebServiceURL.getBaseWebServiceURL())                              
                                    .build();

            UsuarioListener listener = adapter.create(UsuarioListener.class);
            listener.addUsuario(
                                          //header  
                                          "Basic " + BasicAuthenticationRest.getBasicAuthentication(),
                                          params, 
                                          new Callback<JsonElement>() {         
                @Override
                public void success(JsonElement arg0, Response arg1) {
                    Log.i("Usuario:", arg0.toString() + "");                
                }

                @Override
                public void failure(RetrofitError arg0) {
                    Log.e("ERROR:", arg0.getLocalizedMessage());

                }
            }); 

        }
daveztong :

官方文件:

可以使用RequestInterceptor指定需要添加到每个请求的标头。以下代码创建一个RequestInterceptor,它将为每个请求添加一个User-Agent头。

RequestInterceptor requestInterceptor = new RequestInterceptor() {
  @Override
  public void intercept(RequestFacade request) {
    request.addHeader("User-Agent", "Retrofit-Sample-App");
  }
};

RestAdapter restAdapter = new RestAdapter.Builder()
.setEndpoint("https://api.github.com")
.setRequestInterceptor(requestInterceptor)
.build();

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用Retrofit 2向所有请求添加标头

RestKit是否为所有请求添加自定义标头?

UnityWebRequest如何打印所有请求标头

如何用所有请求标头填充字典

为Flutter HTTP请求中的所有请求设置默认标头的最佳方法

所有请求的AngularJS $ http自定义标头

为Angular中除OPTIONS之外的所有请求设置默认标头

springframework获取所有请求标头

将标头添加到所有请求

所有请求的Node.js静态标头

如何在Django中获取所有请求标头?

CloudFront-如何将所有请求标头转发到源

如何在Go中获取所有请求标头

如何为Ionic 2中的所有请求设置默认的Http标头?

如何为路由组中的所有请求设置标头

如何用 JavaScript 中的 XMLHttpRequest 替换所有请求中的标头令牌?

使用AngularJs从响应中检索标头并在所有请求上进行设置

使用tampermonkey获取与页面相关的所有请求的标头

如何在Swagger UI中发送带有请求的自定义标头?

如何使用uget发送一些带有请求的标头?

邮递员:为给定集合或集合级别标头中的所有请求添加给定标头

jmeter捕获单个HTTP请求触发的所有请求和响应标头

NGINX没有将所有请求标头传递给Tomcat

仆人:查看所有请求头

为所有截击请求设置自定义标头

向所有请求添加额外的标头(对Tomcat来说是成角度的)

Okhttp3:将全局标头添加到所有请求错误

Chrome将奇怪的HTTPS:1标头添加到所有请求

DASH mpd 向所有请求添加 http 标头