Obtention du contenu du corps de la requête à l'aide de la méthode POST Retrofit 2.0
J'ai une exigence pour obtenir une demande de corps et d'effectuer certaines opérations logiques avec de Rénovation 2.0 avant de faire enque
opération. Mais malheureusement, je ne suis pas en mesure d'obtenir le poste le contenu du corps de mon appel de service. À l'heure actuelle, après une recherche beaucoup, j'ai trouvé qu'une seule solution comme logging
la request
que je suis la publication à l'aide de Rénovation 2.0 à partir de cette méthode en utilisant HttpLoggingInterceptor
avec OkHttpClient
. J'utilise le code suivant pour ouvrir une session le corps de la requête dans l'Android Logcat:
HttpLoggingInterceptor logging = new HttpLoggingInterceptor();
logging.setLevel(Level.BODY);
OkHttpClient httpClient = new OkHttpClient();
httpClient.interceptors().add(logging);
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(baseURL)
.addConverterFactory(GsonConverterFactory.create())
.build();
return retrofit.create(apiClass);
Problème, je suis confronté avec la méthode ci-dessus:
- Du corps de la requête sont vues seulement à la valeur par défaut d'Android Logcat comme
02-04 01:35:59.235 5007-5035/com.example.retrofitdemo D/OkHttp:{"nameValuePairs":{"id":"1","name":"chandru","type":"user"}}
Mais la méthode ci-dessus ne retourne que le corps de la réponse dans le logcat, je ne suis pas en mesure de l'obtenir que soit String
ou JSONObject
. Même si je pouvais en mesure d'obtenir la réponse du corps à l'aide de HttpLoggingInterceptor
mon corps de la requête sera affiché dans le Logcat avec le tag "OkHttp" tout le temps, même après l'application va dans la production (principalement de ce conduit comme une sorte de soulager les données post dans le logcat).
Mon Exigence:
J'ai besoin d'obtenir le corps de la requête comme String
ou JSONObject
ou quelle que soit la méthode, sans critiquer le post de données dans le Logcat.
Ce que j'ai essayé:
J'ai essayé de récupérer le corps de la requête, même après onResponse
de Response<T> response
mais si je ne pouvais pas en mesure de le faire possible. Veuillez trouver le code que j'utilise à cet effet comme suit:
Gson gson = new Gson();
String responseString = gson.toJson(response.raw().request().body());
Remarque: ci-dessus converti du corps de la requête à l'aide de gson.toJson
méthode renvoie uniquement les méta-données, la demande de données post.
De bien vouloir m'aider en fournissant vos précieux conseils et de solutions. Je n'ai aucune idée de comment faire cela. Je suis complètement coincé avec ce pour les deux derniers jours. S'il vous plaît pardonnez si ma question est trop longue. Vos commentaires sont toujours les bienvenus. Ne laissez-moi savoir si ma demande n'est pas claire. Merci à l'avance.
source d'informationauteur Chandru | 2016-02-03
Vous devez vous connecter pour publier un commentaire.
J'ai eu à travailler à partir de ce lien
Retrofit2: la Modification du corps de la requête en OkHttp Intercepteur
Rénovation des dépendances j'utilise sont
Moi aussi j'avais le même problème, j'avais mis en JSON comme @type de Corps dans la réfection, de sorte que le namevaluepair apparaît en face de l'raw corps, et il peut être vu à l'intérieur de l'intercepteur.
Même si nous avons log/debug le jsonObject.toString nous voir en tant que demande de corriger, sans le namevaluepair présenté.
Ce que j'avais fait était par la mise en
et dans l'appel de la méthode que j'ai converti le JSONObject à JsonObject par