Comment envoyer des données de Formulaire dans retrofit2 android
Salut j'ai un json à envoyer au serveur (POST METHORD){"country":"india","devicetype":"android"}
il est dans la forme du modèle de données
comme la clé de cette json est données c'est à dire est que le serveur accepte comme
data={"country":"india","devicetype":"android"}
suis à l'aide de rénovation-je utiliser en plusieurs parties, comme ce
@Multipart
@POST("initiate")
@Headers({
"Content-Type: application/json",
"Cache-Control: no-cache"
})
Call<UserInfoServerResponse> getUserInfoRequest(@Part(value="data") UserInfo mUserInfo);
ici UserInfo est du json, mais je reçois des message en cas d'échec du serveur après que j'ai utilisé FormUrlEncoded methord
@FormUrlEncoded
@POST("initiate")
@Headers({
"Content-Type: application/json",
"Cache-Control: no-cache"
})
Call<UserInfoServerResponse> getUserInfoRequest(@Field(value="data",encoded = false) String mUserInfo);
sa sortie est également de même de l'échec de résultat à partir du serveur, mais l'envoi des données vers le serveur est dans le formiate de
data=%7B%22country%22%3A%22india%22%2C%22devicetype%22%3A%22%22%7D
Mon UserInfo.class
public class UserInfo {
public String country;
public String devicetype;
public UserInfo( String country,String devicetype) {
this.country=country;
this.devicetype=devicetype;
}
}
Mon adaptateur classe
RemoteRetrofitInterfaces mService;
Retrofit mRetrofit;
HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor();
interceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
OkHttpClient client = new OkHttpClient.Builder()
.connectTimeout(20, TimeUnit.SECONDS)
.writeTimeout(20, TimeUnit.SECONDS)
.readTimeout(30, TimeUnit.SECONDS).addInterceptor(interceptor)
.build();
mRetrofit = new Retrofit.Builder()
.baseUrl(AppConstant.HOST).addConverterFactory(GsonConverterFactory.create())
.client(client)
.build();
mService = mRetrofit.create(RemoteRetrofitInterfaces.class);
Call<UserInfoServerResponse> api = mService.getUserInfoRequest(new Gson().toJson(mUserInfo));
api.enqueue(new Callback<UserInfoServerResponse>() {
@Override
public void onResponse(Call<UserInfoServerResponse> responseCall, Response<UserInfoServerResponse> response) {
if (response.body().status != null) {
if (response.body().status.equals("success")) {
Log.d(TAG, "success---");
}
} else {
Log.d(TAG, "Failed---");
}
}
@Override
public void onFailure(Call<UserInfoServerResponse> responseCall, Throwable t) {
t.printStackTrace();
}
});
alors, comment puis-je envoyer le json de serveur à l'aide de rénovation avec succès, j'ai traversé la retofit document et de suivre quelques étapes mais je n'obtiens aucun résultat. quelqu'un peut-il m'aider dans cette
Merci
UserInfo
classeessayez d'ajouter "Accept: application/json" pour les en-têtes.
où est votre Rénovation RestAdapter code?
okey voici mes infos de l'utilisateur de la classe
merci de me répondre en faire de même. je vais poster
OriginalL'auteur Ramz | 2016-02-29
Vous devez vous connecter pour publier un commentaire.
j'ai enfin trouvé la solution espère que cela aidera certains d'autres
j'ai trouver la solution en utilisant Field-map
de rénovation.
et dans le Reste de l'Adaptateur de la section j'ai changé les données de la demande de la chaîne de Hashmap formulaire comme suit
Basilcally ce que j'ai utilisé @FormUrlEncoded des données de formulaire et @field-map de mettre ma requête JSON comme une valeur clé. j'ai eu la solution en suivant cette méthode, j'espère que ça aidera quelques uns 🙂
OriginalL'auteur Ramz
La solution ci-dessus fonctionne, mais est lourd à utiliser , une meilleure solution est d'utiliser un convertisseur pour @Multipart formData
Veuillez utiliser le soufflet code de procédure @Multipart FormData
C'est parce que
et dans votre rénovation client ajoutez cette ligne
.addConverterFactory(StringConverterFactory.créer())
OriginalL'auteur mughil
Cela fonctionne très bien pour moi et un retour json pour obtenir de nouveaux valide de Microsoft Azure Jeton :
Mon point de fin :
Mon getGraphRepository :
Mon Service D'Émission De Jeton :
Mon GraphRepository :
J'espère que cela peut aider quelqu'un.
OriginalL'auteur XenoX