@Override
    protected void onPostExecute(Object result) {

      if (result != null) {
        listener.OnResponseReceived(result.toString());
      }
    }
  /**
   * Send synchronous request to HTTP server.
   *
   * @param method request method (GET or POST).
   * @param params set of pairs <key, value>, fields.
   * @param listenr interface (callback) to bind to external classes.
   * @return response of HTTP Server.
   */
  private String HTTPSyncRequest(Methods method, JSONObject params, OnHTTPRequest listenr) {
    Log.i(LOG_TAG, "HTTPSyncRequest(" + method + ")");

    List<NameValuePair> requestParams = null;
    HttpRequestBase httpRequest = null;
    OnHTTPRequest listener = listenr;

    try {
      requestParams = jsonToList(params);
    } catch (JSONException e1) {
      e1.printStackTrace();
    }
    // Set parameters of HTTP request.
    HttpParams httpParameters = new BasicHttpParams();
    HttpConnectionParams.setConnectionTimeout(httpParameters, connectionTimeout);
    HttpConnectionParams.setSoTimeout(httpParameters, socketTimeout);

    // Create a new HttpClient and Header
    HttpClient httpclient = new DefaultHttpClient(httpParameters);

    if (method == Methods.GET) {
      httpRequest = new HttpGet(URLServer + "?" + URLEncodedUtils.format(requestParams, "utf-8"));
    } else {
      httpRequest = new HttpPost(URLServer);

      // Add data to request
      try {
        ((HttpPost) httpRequest).setEntity(new UrlEncodedFormEntity(requestParams));
      } catch (UnsupportedEncodingException e) {
        listener.OnResquestError(e.getMessage().toString());
        e.printStackTrace();
      }
    }

    try {
      // Execute HTTP Post Request
      HttpResponse response = httpclient.execute(httpRequest);

      Log.i(LOG_TAG, "Code: " + response.getStatusLine().getStatusCode());

      // Response
      if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
        return getHTTPResponseContent(response);
      } else {
        listener.OnResquestError("Server Error");
      }

    } catch (SocketTimeoutException e) {
      listener.OnResquestError("Socket Timeout" + e.getMessage().toString());
      Log.e(LOG_TAG, "Socket Timeout", e);
    } catch (ConnectTimeoutException e) {
      listener.OnResquestError("Connect Timeout" + e.getMessage().toString());
      Log.e(LOG_TAG, "Connect Timeout", e);
    } catch (ClientProtocolException e) {
      listener.OnResquestError("HTTP Error: " + e.getMessage().toString());
      Log.e(LOG_TAG, "HTTP Error", e);
    } catch (IOException e) {
      listener.OnResquestError("Connection Error: " + e.getMessage().toString());
      Log.e(LOG_TAG, "Connection Error", e);
    }

    return null;
  }