Comment passer Map & lt; String, String & gt; paramètres ou objet à la demande POST via Retrofit?
J'ai un problème avec passage de paramètres de la Carte ou de l'objet de la Rénovation de la requête POST.
Je suis carrékdubb labs tutoriels et ce fil et je ne pouvais pas le comprendre.
Mon code qui fonctionne:
public interface FacebookUser {
@FormUrlEncoded
@POST("/user/login-facebook")
void login(
@Field("fb_access_token") String fbAccessToken,
@Field("os") String os,
@Field("device") String device,
@Field("os_version") String osVersion,
@Field("app_version") String appVersion,
@Field("online") String online,
Callback<FacebookLoginUserResponse> callback
);
}
et code:
RestAdapter restAdapter = new RestAdapter.Builder()
.setServer(requestMaker.getUrl())
.build();
FacebookUser facebookUser = restAdapter.create(FacebookUser.class);
facebookUser.login(getFbAccessToken(),
getString(R.string.config_os),
Info.getAndroidId(getBaseContext()),
Build.VERSION.RELEASE,
Info.getAppVersionName(getBaseContext()),
"" + 1,
new Callback<FacebookLoginUserResponse>() {
@Override
public void success(FacebookLoginUserResponse facebookLoginUserResponse, Response response) {
}
@Override
public void failure(RetrofitError retrofitError) {
}
});
Lorsque j'essaie d'utiliser cette interface que je reçois de serveur dont les paramètres sont manquants:
public interface FacebookUser {
@POST("/user/login-facebook")
void login(
@Body Map<String, String> map,
Callback<FacebookLoginUserResponse> callback
);
}
et une carte:
HashMap<String, String> map = new HashMap<String, String>();
map.put("fb_access_token", getFbAccessToken());
map.put("os", "android");
map.put("device", Info.getAndroidId(getBaseContext()));
map.put("os_version", Build.VERSION.RELEASE);
map.put("app_version", Info.getAppVersionName(getBaseContext()));
map.put("online", "" + 1);
Questions:
De quoi est-ce mal?
Comment puis-je passer de l'objet à la demande?
source d'informationauteur piobab
Vous devez vous connecter pour publier un commentaire.
Eh bien, maintenant nous pouvons mettre en œuvre cette chose (la version 1.5.0).
En rénovation 2.0 que vous avez à faire de cette façon:
Cette fonctionnalité n'est pas encore pris en charge par la Rénovation 1.2.2, cependant, vous pouvez compiler votre propre version de la branche master avec cette fonctionnalité, ou d'attendre la prochaine version.
https://github.com/square/retrofit/pull/390
Mise à jour:
Il est disponible en Rénovation version 1.5.0 ! (ref Anton Golovin réponse)