Ainda não tem acesso? Estude com a gente! Matricule-se
Ainda não tem acesso? Estude com a gente! Matricule-se

Solucionado (ver solução)

Enviar dados numa requisição GET

Preciso receber uma lista de dados por uma requisição GET, mas é necessário enviar quatro informações na requisição para que a mesma seja autorizada, acredito que precisa ser feito pelo Header, mas estou com dificuldade na implementação utilizando o retrofit. Não encontrei na documentação do retrofit como proceder, agradeço ajuda desde já.

3 respostas

Eae Ivan beleza? Tem outras maneiras de enviar dados a um GET além do header. Existe o @Path e o @Query ambos serão enviados pela URL da requisição.

Exemplo de @Path:

@GET("tua/url/{type}/")
    Call<List<Object>> getObjectsList(
            @Path("Type") int term
    );

Exemplo de @Query:

@GET("tua/url/")
    Call<List<Object>> getObjectsList(
            @Query("nomeDaQuery") String query
    );

Oi Ivan, tudo bem?

Nesta página da documentação na subseção HEADER MANIPULATION (infelizmente o jeito mais fácil de buscar é via Ctrl + F, filtro do navegador) destaca como é possível enviar headers e as possibilidades com base na API do Retrofit. Seguem dois exemplos da apresentados na documentação:

@Headers("Cache-Control: max-age=640000")
@GET("widget/list")
Call<List<Widget>> widgetList();
@Headers({
    "Accept: application/vnd.github.v3.full+json",
    "User-Agent: Retrofit-Sample-App"
})
@GET("users/{username}")
Call<User> getUser(@Path("username") String username);

[]s

solução

Obrigado pela atenção , consegui resolver o problema colocando o @Header para cada um dos parâmetros que precisava enviar, dessa forma:

   @Headers("Accept: application/json")
    @GET("/api/exemplo")
    Call <List<ExemploLista>> buscaTodas(@Header("DEVICE-TYPE") String deviceType,
                                         @Header("userToken") String userToken,
                                         @Header("profileKey") String profileKey,
                                         @Header("userName") String userName);
}