title: java.net.SocketTimeoutException in okhttp
body: <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>