Situation: J'ai un jeton API et je souhaite obtenir des données json. Mais ce jeton doit être utilisé comme en-tête, pas comme paramètre de requête. Comme je l'ai compris, je ne pouvais pas taper sur la demande de mon navigateur avec en-tête. Pour plus d'informations sur l'API que j'utilise, vous pouvez y rechercher: https://developer.fantasydata.com/docs/services/594407b00f14bf15264fd958/operations/5944088b14338d0eb80b2809Comment récupérer JSON en utilisant retrofit avec en-têtes?
Problème: Étant donné que je ne connais pas le type de champs requis par la requête JSON, je ne peux pas créer de classe pour ces données json. Je veux utiliser JacksonConverter. Donc la question est: comment obtenir ce JSON et regarder à quoi cela ressemble, puis créer une classe pour cela afin de convertir?
Ci-dessous vous pouvez voir mon code avec des commentaires compréhensibles:
Ma classe PrefsApplication pour la création de demande http:
public class PrefsApplication extends Application {
private static Retrofit retrofit = null;
static String base = "https://api.fantasydata.net/v3/soccer/scores/"; // my base url
public static Retrofit getClient() {
if(retrofit == null) {
retrofit = new Retrofit.Builder().baseUrl(base).addConverterFactory(JacksonConverterFactory.create()).build();
}
return retrofit;
}
}
Mon interface pour faire la demande get et de mettre en-tête
public interface RestInterface {
@Headers("Ocp-Apim-Subscription-Key: {MY_KEY}") // here is header, I don't know is it properly written?
@GET("scores/json/Areas") // my get request
Call<List<Country>> getCountries(); // here, I want to get list of countries
}
Il est MainActivity:
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
RestInterface rest = PrefsApplication.getClient().create(RestInterface.class);
Call<List<Country>>call = rest.getCountries();
call.enqueue(new Callback<List<Country>>() {
@Override
public void onResponse(Call<List<Country>> call, Response<List<Country>> response) { }
@Override
public void onFailure(Call<List<Country>> call, Throwable t) { }
});
}
}
"Étant donné que je ne connais pas le type de champs requis par la requête JSON", pensez à utiliser un service disposant d'une meilleure documentation. Sinon, utilisez la commande 'curl' affichée sur cette page pour obtenir un exemple de sortie. – CommonsWare