Was ist dieser Fehler? Wie kann ich das beheben? Meine App wird ausgeführt, kann jedoch keine Daten laden. Und das ist mein Fehler: Verwenden Sie JsonReader.setLenient (true), um fehlerhaften JSON in Zeile 1, Spalte 1, Pfad $ zu akzeptieren
Das ist mein 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();
}
AKTUALISIEREN
Immer dieser Fehler nicht über Ihren JSON, es könnte von Ihrer falschen Anfrage werden, zur besseren Behandlung überprüfen Sie zuerst Ihre Anfrage im Postboten, wenn Sie eine Antwort erhalten haben, und vergleichen Sie Ihre JSON-Antwort mit Ihrem Modell, wenn nichts falsch ist, dann kommt dieser Fehler von Ihrer falschen Anfrage. es könnte auch passieren, wenn Ihre Antwort nicht josn ist (in einigen Fällen könnte die Antwort HTML sein)
System.out.println
, Ja? In Android können Sie die Log
Klasse verwenden, aber das spielt keine Rolle. Sie erhalten keine Daten oder es tritt ein Fehler bei oder in der Nähe auf JSONResponse jsonResponse = response.body();
. Ich weiß nicht, wie ich Ihren Fehler beheben soll, da er möglicherweise mit dem Netzwerk zusammenhängt. Sie sollten in der Lage sein, diesen Wert selbst zu überprüfen.
response.body()