It takes so long to get data from json
. When it is removed and installed again, it will receive json
for 1 minute, and when I press the button for json
again, it takes a lot of time and still the data does not get into listview
Here is my exception code
E/JSONDemo: IOExceptiojava.net.SocketTimeoutException at java.net.PlainSocketImpl.read(PlainSocketImpl.java:493) at java.net.PlainSocketImpl.-wrap0(PlainSocketImpl.java) at java.net.PlainSocketImpl$PlainSocketInputStream.read(PlainSocketImpl.java:242) at okio.Okio$2.read(Okio.java:140) at okio.AsyncTimeout$2.read(AsyncTimeout.java:238) at okio.RealBufferedSource.indexOf(RealBufferedSource.java:325) at okio.RealBufferedSource.indexOf(RealBufferedSource.java:314) at okio.RealBufferedSource.readUtf8LineStrict(RealBufferedSource.java:210) at okhttp3.internal.http.Http1xStream.readResponse(Http1xStream.java:184) at okhttp3.internal.http.Http1xStream.readResponseHeaders(Http1xStream.java:125) at okhttp3.internal.http.HttpEngine.readNetworkResponse(HttpEngine.java:775) at okhttp3.internal.http.HttpEngine.access$200(HttpEngine.java:86) at okhttp3.internal.http.HttpEngine$NetworkInterceptorChain.proceed(HttpEngine.java:760) at okhttp3.internal.http.HttpEngine.readResponse(HttpEngine.java:613) at okhttp3.RealCall.getResponse(RealCall.java:244) at okhttp3.RealCall$ApplicationInterceptorChain.proceed(RealCall.java:201) at okhttp3.RealCall.getResponseWithInterceptorChain(RealCall.java:163) at okhttp3.RealCall.access$100(RealCall.java:30) at okhttp3.RealCall$AsyncCall.execute(RealCall.java:127) at okhttp3.internal.NamedRunnable.run(NamedRunnable.java:32) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588) at java.lang.Thread.run(Thread.java:818)
here is the json code in the java file:
progress = ProgressDialog.show(MainActivity.this, "dialog title", "dialog message", true); Toast.makeText(MainActivity.this, "ok", Toast.LENGTH_LONG).show(); if (isNetworkAvailable()) { String url = "ConstantValue.URL"; RequestBody formBody = new FormBody.Builder() .add(employeeId, value) .build(); try { post(url, formBody, new Callback() { @Override public void onFailure(Call call, IOException e) { Log.e("JSONDemo", "IOException", e); } @Override public void onResponse(final Call call, final Response response) throws IOException { String JSON = response.body().string(); Log.e("res", " " + JSON); try { JSONObject jsonObj = new JSONObject(JSON); JSONArray resultarr = jsonObj.getJSONArray("result"); final JSONArray resultarr1 = jsonObj.getJSONArray("result1"); if (resultarr1.length() == 0) { showAlertDialog("API", "Data Unavailable"); } else { for (int i = 0; i < resultarr1.length(); i++) { Employee emp = new Employee(); JSONObject result1obj = resultarr1.getJSONObject(i); String result1Id = result1obj.getString("ID"); String result1Name = result1obj.getString("NAME"); String result1Value = result1obj.getString("VALUE"); Log.e("result", " " + result1Name); Log.e("result", " " + result1Value); Log.e("result", " " + result1Id); emp.setValue(result1Value); emp.setName(result1Name); emp.setId(result1Id); arr.add(emp); } } runOnUiThread(new Runnable() { @Override public void run() {
Other codes:
private final OkHttpClient client = new OkHttpClient(); Call post(String url, RequestBody formBody, Callback callback) throws IOException { Request request = new Request.Builder() .url(url) .post(formBody) .build(); client.setConnectTimeout(30, TimeUnit.SECONDS); client.setReadTimeout(30, TimeUnit.SECONDS); client.setWriteTimeout(30, TimeUnit.SECONDS); Call call = client.newCall(request); call.enqueue(callback); return call; }