java.net.SocketTimeoutException in okhttp
<p>Here it takes so much time to get data from <code>json</code>. When deleted and again installed it will get <code>json</code> within 1 min and when i again click button for <code>json</code> it takes so much time and still data is not getting in <code>listview</code></p>

<p><strong>Here is my exception code</strong></p>

<pre><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)
</code></pre>

<p><strong>here is a json code in java file:</strong></p>

<pre><code>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 &lt; 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() {

                                 // you can access all the UI componenet
                                 if (progress.isShowing()) 
                                     progress.dismiss();
                                 cu.notifyDataSetChanged();
                             }
                         });
                     } catch (Exception e) {
                         Log.e("JSONDemo", "onResponse", e);
                         showAlertDialog("API","Something went wrong");
                     }

                 }
             });

         } catch (Exception e) {
             Log.e("JSONDemo", "Post Exception", e);
         }

     } else {
         Toast.makeText(MainActivity.this, "Internet not available", Toast.LENGTH_LONG).show();
     }
}
</code></pre>

<p>Other codes:</p>

<pre><code>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;
}
</code></pre>