이 오류는 무엇입니까? 이 문제를 어떻게 해결할 수 있습니까? 내 앱이 실행 중이지만 데이터를로드 할 수 없습니다. 그리고 이것은 내 오류입니다 .JsonReader.setLenient (true)를 사용하여 줄 1 열 1 경로 $에서 잘못된 JSON을 수락하십시오.
이것은 내 조각입니다.
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();
}
최신 정보
항상이 오류는 json에 관한 것이 아니라 잘못된 요청으로 인해 발생할 수 있습니다. 응답을 받으면 먼저 우편 배달부에서 요청을 확인한 다음 json 응답을 모델과 비교하십시오.이 오류는 잘못된 요청에서 비롯된 것입니다. 또한 귀하의 응답이 josn이 아닐 때 발생할 수 있습니다 (어떤 경우에는 응답이 html 일 수 있음)
System.out.println
, 예? Android에서는 Log
수업을 사용할 수 있지만 중요하지 않습니다. 데이터를받지 못하거나에서 또는 그 주변에서 오류가 발생했습니다 JSONResponse jsonResponse = response.body();
. 네트워킹 관련 일 수 있으므로 오류를 수정하는 방법을 모르겠습니다. 이 값을 직접 검사 할 수 있어야합니다.
response.body()