J'utilise Revofit2 avec le convertisseur de gson.
La réponse de mon serveur est la suivante: p> et ceci est ma classe de pojo: p> VideoTem Class: P> @Headers("Content-Type:application/json")
@POST("video/list-video.php")
Call<ResponseVideoList> getVideoListFromSearchText(@Body JsonObject jsonObject);
3 Réponses :
Supprimer tout ce qui est dans la classe de réponseVidéoliste et simplement mettre cela; Après cela, utilisez cette classe une classe dans votre rénovation complète analysera dans cette classe
public class ResponseVideoList { /** * resonse : {"status":200,"result":[{"video_id":"3c19979979","video_title":"Sushil Kumar Modi press conference after serial bomb blasts at Modi rally in Patna","video_description":"BJP at Patna serial blast in Bihar, Nitish government has stood in the dock. Former Deputy Chief Minister Sushil Kumar Modi said the blasts Narendra Modi were targeted. He said that Nitish Kumar look Modi as the enemy.<br />\r\n","video_poster":"https://vbcdn.com/cdn/download/2013102913830306761810268995.jpg","video_duration":"02:02","video_category":"News/Politics"}]} */ private ResonseBean resonse; public ResonseBean getResonse() { return resonse; } public void setResonse(ResonseBean resonse) { this.resonse = resonse; } public static class ResonseBean { /** * status : 200 * result : [{"video_id":"3c19979979","video_title":"Sushil Kumar Modi press conference after serial bomb blasts at Modi rally in Patna","video_description":"BJP at Patna serial blast in Bihar, Nitish government has stood in the dock. Former Deputy Chief Minister Sushil Kumar Modi said the blasts Narendra Modi were targeted. He said that Nitish Kumar look Modi as the enemy.<br />\r\n","video_poster":"https://vbcdn.com/cdn/download/2013102913830306761810268995.jpg","video_duration":"02:02","video_category":"News/Politics"}] */ private int status; private List<ResultBean> result; public int getStatus() { return status; } public void setStatus(int status) { this.status = status; } public List<ResultBean> getResult() { return result; } public void setResult(List<ResultBean> result) { this.result = result; } public static class ResultBean { /** * video_id : 3c19979979 * video_title : Sushil Kumar Modi press conference after serial bomb blasts at Modi rally in Patna * video_description : BJP at Patna serial blast in Bihar, Nitish government has stood in the dock. Former Deputy Chief Minister Sushil Kumar Modi said the blasts Narendra Modi were targeted. He said that Nitish Kumar look Modi as the enemy.<br /> * video_poster : https://vbcdn.com/cdn/download/2013102913830306761810268995.jpg * video_duration : 02:02 * video_category : News/Politics */ private String video_id; private String video_title; private String video_description; private String video_poster; private String video_duration; private String video_category; public String getVideo_id() { return video_id; } public void setVideo_id(String video_id) { this.video_id = video_id; } public String getVideo_title() { return video_title; } public void setVideo_title(String video_title) { this.video_title = video_title; } public String getVideo_description() { return video_description; } public void setVideo_description(String video_description) { this.video_description = video_description; } public String getVideo_poster() { return video_poster; } public void setVideo_poster(String video_poster) { this.video_poster = video_poster; } public String getVideo_duration() { return video_duration; } public void setVideo_duration(String video_duration) { this.video_duration = video_duration; } public String getVideo_category() { return video_category; } public void setVideo_category(String video_category) { this.video_category = video_category; } } } }
Après la réponse, vous pouvez accéder à la réponse.body (). Données Quelque chose comme ça aussi, vous n'avez pas besoin de générer une classe supplémentaire
public class Example implements Serializable { @SerializedName("resonse") @Expose private Resonse resonse; private final static long serialVersionUID = 1058617649272447322L; public Resonse getResonse() { return resonse; } public void setResonse(Resonse resonse) { this.resonse = resonse; } } public class Resonse implements Serializable { @SerializedName("status") @Expose private Integer status; @SerializedName("result") @Expose private List<Result> result = null; private final static long serialVersionUID = 3708794248294394638L; public Integer getStatus() { return status; } public void setStatus(Integer status) { this.status = status; } public List<Result> getResult() { return result; } public void setResult(List<Result> result) { this.result = result; } } public class Result implements Serializable { @SerializedName("video_id") @Expose private String videoId; @SerializedName("video_title") @Expose private String videoTitle; @SerializedName("video_description") @Expose private String videoDescription; @SerializedName("video_poster") @Expose private String videoPoster; @SerializedName("video_duration") @Expose private String videoDuration; @SerializedName("video_category") @Expose private String videoCategory; private final static long serialVersionUID = -7678430047668505370L; public String getVideoId() { return videoId; } public void setVideoId(String videoId) { this.videoId = videoId; } public String getVideoTitle() { return videoTitle; } public void setVideoTitle(String videoTitle) { this.videoTitle = videoTitle; } public String getVideoDescription() { return videoDescription; } public void setVideoDescription(String videoDescription) { this.videoDescription = videoDescription; } public String getVideoPoster() { return videoPoster; } public void setVideoPoster(String videoPoster) { this.videoPoster = videoPoster; } public String getVideoDuration() { return videoDuration; } public void setVideoDuration(String videoDuration) { this.videoDuration = videoDuration; } public String getVideoCategory() { return videoCategory; } public void setVideoCategory(String videoCategory) { this.videoCategory = videoCategory; } }
Pour vous aider et trouver votre problème, utilisez cette bibliothèque et voir les journaux de réseau et votre réponse, vous pouvez trouver votre problème,
Ajouter ceci à Dépendances CODE> P>
OkHttpClient client = new OkHttpClient.Builder()
.addInterceptor(new HttpLoggingInterceptor().setLevel(HttpLoggingInterceptor.Level.BODY))
.addInterceptor(new Interceptor() {
@Override
public Response intercept(Chain chain) throws IOException {
Request newRequest = chain.request().newBuilder()
.addHeader("Authorization", "Bearer " + token)
.build();
return chain.proceed(newRequest);
}
}).build();
Vous avez la même réponse que Postman mais ne peut pas comprendre lequel est la ligne 3 de la colonne 1.
@Sushrita Avez-vous changé JSONOBJECT à la réponseVidéoliste?
pourquoi ferais-je cela?
Vérifiez ma réponse modifiée. J'ai mis le client d'API correct pour vous. utilisez cela et dites-moi notre problème résolu ou non
Je viens de vous demander la nécessité de le faire et ça ne marchera pas, je pense
Vous devez le faire parce que votre réponse est la réponseVidéoliste pas JSONObject
que je l'ai fait à l'appel
Assurez-vous que votre réponse est correcte lorsque vous l'appelez de l'application
@Radesh qu'entendez-vous par le courant?
Où est videotingem i> classe où vous devriez sérialiser tous les articles de celui-ci
Désolé, je veux dire qu'une réponse parfois est erronée lorsque vous l'appelez à partir de l'application, par exemple, renvoyer une chaîne simple en tant que résonance qui indique le message d'erreur et ce problème de couse
Publier votre classe VideoTem
Si la réponse n'est pas en fonction de ce modèle, il est évident que la modernisation jettera l'exception. Il doit être le format spécifié ci-dessus ou le GSON ne pourra pas l'analyser
Le backend doit veiller à ce que ce format JSON spécifique soit suivi dans tous les cas.
@Kushan alors y a-t-il quelque chose qui ne va pas avec la classe modèle pour cette réponse
@Piyush a édité la question
Veuillez vérifier votre code Backend pour tout
echo code> ou
impression () code>.
@DHAVALASODARIYA Comment vérifier cela?
Demandez à celui qui a développé des services pour Frontend.
Le modèle est bon .... Le backend doit coller au format de réponse standard dans tous les cas. L'application n'est pas le problème
@Kushan il donne la réponse au serveur ci-dessus dans Postman.
Aussi un conseil: Jsonschema2pojo.org Utilisez ceci pour la modélisation des classes JSON vers des classes Pojo. Ça fait gagner un tas de temps et littéralement tout ce que vous devez faire est de coller le format JSON et le voila!
@Kushan oui j'ai généré les cours de pojo d'ici seulement
Pouvez-vous ajouter l'appel à modernisation et le service dans la question, je pense que c'est l'appel > Ce qui pourrait être un problème alors ... par service je veux dire l'interface
Lisez attentivement .. attendu begin_Object mais ficelle. Son arrive dans votre réponse.
Votre modèle attend JSONOBJECT, mais en réponse à sa prochaine chaîne ... Localisez le JSON PARAM et comparez-le avec la réponse que vous avez reçue, que ses attentes ne sont pas remplies.
@Rajeshvijayakumar ici Il est indiqué que la chaîne est trouvée à la ligne 3 colonne 1 .so pouvez-vous m'aider à trouver la ligne exacte?
S'il vous plaît poster le journal complet ici, puis ne sera capable que de localiser votre problème ..
@Rajeshvijayakumar a édité ma réponse avec le journal.
Pouvez-vous ajouter quelques journaux plus après Java.lang.illegalStateException: attendu Begin_Object mais ficelle à la ligne 3 Colonne 1 Path $
@Rajeshvijayakumar L'appel HTTP est déconnecté après cela, donc plus de journal après cela.
Ce n'est pas sur l'appel HTTP, c'est à propos de l'appel http post-http où la réponse est manipulée .. Essayez d'ajouter des journaux à la bonne place et de partager les journaux ...
@Rajeshvijayakumar ouais a résolu en examinant les données du journal. Le problème était au niveau du serveur.