public class SignUp extends AsyncTask<String, String, String> { ProgressDialog progressDialog; HttpURLConnection connection = null; BufferedReader reader = null; Activity activity; public SignUp(Activity activity) { this.activity = activity; } @Override protected void onPreExecute() { super.onPreExecute(); // display a progress dialog for good user experiance progressDialog = new ProgressDialog(activity); progressDialog.setMessage("Please Wait"); progressDialog.setCancelable(false); progressDialog.show(); } @Override protected String doInBackground(String... params) { String result = null; AccountViewModel account; Gson gson; try { URL url = new URL(params[0]); String email = params[2]; String password = params[3]; String username = params[1]; connection = (HttpURLConnection) url.openConnection(); connection.setDoOutput(true); connection.setRequestMethod("POST"); connection.setRequestProperty("Content-Type", "application/json"); connection.connect(); JSONObject jsonObject = new JSONObject(); jsonObject.put("email", email); jsonObject.put("password", password); jsonObject.put("user", username); DataOutputStream wr = new DataOutputStream(connection.getOutputStream()); wr.writeBytes(jsonObject.toString()); wr.flush(); wr.close(); int statusCode = connection.getResponseCode(); if(statusCode == 200){ InputStream stream = connection.getInputStream(); reader = new BufferedReader(new InputStreamReader(stream)); StringBuffer buffer = new StringBuffer(); String line =""; while ((line = reader.readLine()) != null){ buffer.append(line); } String jsonObjectHome = buffer.toString(); result = jsonObjectHome; } if (statusCode == 400){ account = new AccountViewModel(); account.setStatusCode(statusCode); account.setMessage("bad request"); gson = new Gson(); result = gson.toJson(account); } if (statusCode == 404){ account = new AccountViewModel(); account.setStatusCode(statusCode); account.setMessage("User not found please sign up"); gson = new Gson(); result = gson.toJson(account); } if (statusCode == 500){ account = new AccountViewModel(); account.setStatusCode(statusCode); account.setMessage("Internal server error"); gson = new Gson(); result = gson.toJson(account); } if (statusCode == 409){ account = new AccountViewModel(); account.setStatusCode(statusCode); account.setMessage("Email already exists"); gson = new Gson(); result = gson.toJson(account); } } catch (Exception e) { Log.e("MainActivity", e.getMessage(), e); } finally { if(connection != null) { connection.disconnect(); } try { if(reader != null) { reader.close(); } } catch (IOException e) { e.printStackTrace(); } } return result; } @Override protected void onPostExecute(String result) { super.onPostExecute(result); progressDialog.cancel(); } }