Search code examples
javaandroidarraysjsonandroid-asynctask

Async task HttpPost request DoInbackground call web api Android Studio Java, how to add body string array?


I am trying to send a raw body request Array, any idea how to implement the Body array string, in java android studio?

Web API .net framework c# working:

[Route("api/login_test")]
[HttpPost]
public object login_test([FromBody] string[] Username_Password])
{
    string UsernameOrEmail_address, Password;
    UsernameOrEmail_address = Username_Password[0];
    Password = Username_Password[1];

    return UsernameOrEmail_address  + " " + Password;
}

Below what i am trying to achieve, this also as a reference,web api c# test on postman and working Java Async Task from android studio:


   /**
     * Async task class to get json by making HTTP call
     */
    private class login_test extends AsyncTask<Void, Void, Void> {

        HttpURLConnection conn = null ;
        BufferedReader reader = null;
        @Override
        protected Void doInBackground(Void... voids) {

            try {
                URL url_login;

                url_login = new URL(url_api + "login_test");
             
                conn = (HttpURLConnection) url_login.openConnection();
                conn.setRequestMethod("POST");
               


                JSONArray jsonArray = new JSONArray();
                jsonArray.put(0, username);
                jsonArray.put(1,  password);

                OutputStreamWriter osw = new OutputStreamWriter(conn.getOutputStream());
                osw.write(String.valueOf(jsonArray));

                Log.i("Body to API", String.valueOf(jsonArray));
                osw.flush();
                osw.close();
}

}

}

I tried above, but it is not success because somehow it is not being written right, and i am getting exception as it fails


Solution

  • I found my issue, I had to a Content-Type as application/json

    conn.setRequestProperty("Content-Type","application/json");