0
votes

rénovit2 errorbody.Content n'est pas accessible

Je suis nouveau dans le monde de l'ExtrOfit2, j'ai actuellement un problème pour obtenir une erreur d'erreur de Onnext code>.

Voici mon code d'exemple: p>

 public void onNext(Response<LoginResponse> value) {
      ResponseBody responseBody = value.errorBody();
      String sam = responseBody.toString();
 }


3 Réponses :


0
votes

Vous pouvez essayer: xxx

ou xxx


0 commentaires

0
votes

Les carrosseries d'erreur de la rénovation sont de type OKHTTP3 de réponse de réponse . Cette classe est abstraite et ses implémentations définissent différentes manières que le contenu est représenté en interne.

Il existe différentes façons de pouvoir obtenir le contenu. Vous pouvez l'obtenir dans octets , en tant que chaîne, ou même obtenir un INPUTStream pour celui-ci - vérifiez-les ici .

Je suppose un moyen facile d'utiliser string () < / Code>: xxx

Notez que ces méthodes lisent généralement la réponse d'un tampon, ce qui signifie que si je me rappelle correctement, appelez à nouveau chaîne () ne vous donnerait plus le contenu de la réponse. En particulier, chaîne () lit également tout le corps en mémoire, ce qui peut provoquer une exception hors mémoire.

Après avoir eu le contenu, si vous le souhaitez comme un objet. Depuis votre modèle de données, vous devrez le désérialiser manuellement. Il existe de nombreuses façons de le faire et il est facile de trouver sur le Web, mais pour des raisons de complétude, voici un moyen de le faire avec gson : xxx

(ici mypojo serait votre classe d'erreur représentant l'erreur)


0 commentaires

0
votes

Vous ne pouvez pas obtenir d'erreurs sans code d'erreur HTTP. Utilisez SMT comme ceci:

if (!value.isSuccessful && value.errorBody() != null) {
    val errorBodyText = value.errorBody()?.string()?:""
    val errorResponse = Gson().fromJson<ErrorObject>(errorBodyText, ErrorObject::class.java)
}


0 commentaires