Quelle est cette erreur ? Comment puis-je la corriger ? Mon application fonctionne mais ne peut pas charger les données. Et voici mon erreur : Use JsonReader.setLenient(true) to accept malformed JSON at line 1 column 1 path $.
C'est mon fragment :
public class news extends Fragment {
private RecyclerView recyclerView;
private ArrayList<Deatails> data;
private DataAdapter adapter;
private View myFragmentView;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
myFragmentView = inflater.inflate(R.layout.news, container, false);
initViews();
return myFragmentView;
}
private void initViews() {
recyclerView = (RecyclerView) myFragmentView.findViewById(R.id.card_recycler_view);
RecyclerView.LayoutManager layoutManager = new LinearLayoutManager(getActivity().getApplicationContext());
recyclerView.setHasFixedSize(true);
recyclerView.setLayoutManager(layoutManager);
data = new ArrayList<Deatails>();
adapter = new DataAdapter(getActivity(), data);
recyclerView.setAdapter(adapter);
new Thread()
{
public void run()
{
getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
loadJSON();
}
});
}
}
.start();
}
private void loadJSON() {
if (isNetworkConnected()){
HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor();
interceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
OkHttpClient client = new OkHttpClient.Builder()
.addInterceptor(interceptor)
.retryOnConnectionFailure(true)
.connectTimeout(15, TimeUnit.SECONDS)
.build();
Gson gson = new GsonBuilder()
.setLenient()
.create();
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("http://www.memaraneha.ir/")
.client(client)
.addConverterFactory(GsonConverterFactory.create(gson))
.build();
RequestInterface request = retrofit.create(RequestInterface.class);
Call<JSONResponse> call = request.getJSON();
final ProgressDialog progressDialog = new ProgressDialog(getActivity());
progressDialog.show();
call.enqueue(new Callback<JSONResponse>() {
@Override
public void onResponse(Call<JSONResponse> call, Response<JSONResponse> response) {
progressDialog.dismiss();
JSONResponse jsonResponse = response.body();
data.addAll(Arrays.asList(jsonResponse.getAndroid()));
adapter.notifyDataSetChanged();
}
@Override
public void onFailure(Call<JSONResponse> call, Throwable t) {
progressDialog.dismiss();
Log.d("Error", t.getMessage());
}
});
}
else {
Toast.makeText(getActivity().getApplicationContext(), "Internet is disconnected", Toast.LENGTH_LONG).show();}
}
private boolean isNetworkConnected() {
ConnectivityManager cm = (ConnectivityManager) getActivity().getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo ni = cm.getActiveNetworkInfo();
if (ni == null) {
// There are no active networks.
return false;
} else
return true;
}
}
RequestInterface :
public interface RequestInterface {
@GET("Erfan/news.php")
Call<JSONResponse> getJSON();
}
MISE À JOUR (lisez le texte ci-dessous et trouvez votre problème)
- toujours cette erreur ne concerne pas votre json, elle pourrait provenir de votre pour mieux gérer, vérifiez d'abord votre demande dans postman. si vous avez obtenu une réponse, comparez votre réponse json avec votre modèle. Si tout va bien, cette erreur provient d'une mauvaise demande, aussi il pourrait se produire quand votre réponse pas josn (dans certains cas réponse peut être html)
0 votes
Veuillez montrer la sortie que vous recevez de
response.body()
0 votes
@cricket_007 je modifie ma question et montre mes résultats
0 votes
Je n'ai pas demandé d'images. Je vous ai demandé d'imprimer la valeur qui est peut-être renvoyée par le serveur.
1 votes
Comment imprimer une valeur en Java ?
System.out.println
Oui ? Dans Android, vous pouvez utiliser la fonctionLog
mais cela n'a pas d'importance. Vous n'obtenez pas de données ou une erreur se produit à ou autour deJSONResponse jsonResponse = response.body();
. Je ne sais pas comment réparer votre erreur car elle peut être liée au réseau. Vous devriez être en mesure d'inspecter cette valeur par vous-même.0 votes
Je ne suis pas un pro non plus, j'essaie de vous apprendre à déboguer n'importe quelle application Java, rien de vraiment spécifique à Android.
0 votes
Je rencontre ce problème pour la réponse XML et non pour la réponse JSON.
0 votes
Si vos formats JSON sont corrects, vérifiez vos requêtes de base de données. Essayez de les modifier et réessayez
0 votes
"Cette phrase de votre mise à jour m'aide à réparer. J'ai oublié d'ajouter "format = json" dans mon objet de requête.