implementar - retrofit java server
Retrofit “Autorización”, “Portador”+token (2)
Si desea agregar un token de portador como encabezado, puede hacer ese tipo de proceso. Esta es una manera de trabajar con el token de Bearar.
En su interfaz
@Headers({ "Content-Type: application/json;charset=UTF-8"})
@GET("api/Profiles/GetProfile")
Call<UserProfile> getUser(@Query("id") String id, @Header("Authorization") String auth);
Después de eso, llamarás al objeto Retrofit de esta manera.
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("your Base URL")
.addConverterFactory(GsonConverterFactory.create())
.build();
APIService client = retrofit.create(APIService.class);
Call<UserProfile> calltargetResponce = client.getUser("0034", "Bearer "+token);
calltargetResponce.enqueue(new Callback<UserProfile>() {
@Override
public void onResponse(Call<UserProfile> call, retrofit2.Response<UserProfile> response) {
UserProfile UserResponse = response.body();
Toast.makeText(this, " "+response.body(), Toast.LENGTH_SHORT).show();
}
@Override
public void onFailure(Call<UserProfile> call, Throwable t) {
//Toast.makeText(this, "Failed ", Toast.LENGTH_SHORT).show();
}
});
Otra forma es usar la intercepción ... que es similar a la respuesta anterior, pero esa vez, solo necesita modificar la interfaz.
@Headers({ "Content-Type: application/json;charset=UTF-8"})
@GET("api/Profiles/GetProfile")
Call<UserProfile> getUser(@Query("id") String id);
Espero que esto funcione para usted
Estoy tratando de usar Retrofit (2)
, quiero agregar Token
a mi Header
Así:
Authorization: Bearer Token
pero el code
siguiente no funciona:
public interface APIService {
@Headers({
"Authorization", "Bearer "+ token
})
@GET("api/Profiles/GetProfile?id={id}")
Call<UserProfile> getUser(@Path("id") String id);
}
mi servidor es asp.net webApi
ayuda, ¿qué debo hacer?
Tiene dos opciones: puede agregarlo como un parámetro a su llamada.
@GET("api/Profiles/GetProfile?id={id}")
Call<UserProfile> getUser(@Path("id") String id, @Header("Authorization") String authHeader);
Esto puede ser un poco molesto porque tendrá que pasar el "Bearer" + token
en cada llamada. Esto es adecuado si no tiene muchas llamadas que requieren el token.
Si desea agregar el encabezado a todas las solicitudes, puede usar un interceptor okhttp -
OkHttpClient client = new OkHttpClient.Builder().addInterceptor(new Interceptor() {
@Override
public Response intercept(Chain chain) throws IOException {
Request newRequest = chain.request().newBuilder()
.addHeader("Authorization", "Bearer " + token)
.build();
return chain.proceed(newRequest);
}
}).build();
Retrofit retrofit = new Retrofit.Builder()
.client(client)
.baseUrl(/** your url **/)
.addConverterFactory(GsonConverterFactory.create())
.build();