Java how to send special character is post

Viewed 115

Im trying to send a post to a backend API from android and this is what I have but some special characters relating to application/x-www-form-urlencoded content type wont be sent or cause problems. Im wondering if there is a way to send the special characters in this format? (+,&) I'm attempting to send the message "This is a message + a test" but my database is getting "This is a message a test"

I've tried passing JSON but the backend that my co-students wrote doesn't accept JSON and returns a 401 not authorized error.

public void sendMessage() {
        if(!mEdit.getText().toString().trim().matches("")) {                                                  //Cant send empty strings
            Thread thread = new Thread(new Runnable() {
                @Override
                public void run() {
                    try {
                        URL url = new URL(Sendurl);                                                                 //Create URL
                        HttpURLConnection conn = (HttpURLConnection) url.openConnection();                          //Create a Connector
                        conn.setRequestMethod("POST");                                                              //Dictate the Method
                        conn.setRequestProperty("Content-Type", "application/json; utf-8");                  //Some other properties
                        conn.setRequestProperty("Accept", "application/json");
                        conn.setDoOutput(true);
                        conn.setDoInput(true);

                        //This part causes a 401 error because it is the equivalent of passing parameters but our backend uses body formatting
                        JSONObject jsonParam = new JSONObject();
                        Date date = new Date();
                        RequestParams params = new RequestParams();


                        params.put("username", "admin");
                        params.put("sessionID", 1);
                        params.put("cardNum", 111111111);
                        params.put("sentByStaff", "false");
                        params.put("message", "This is the message + a test");
                        params.put("time", date.getTime()/1000);

                        Log.i("JSON",  params.toString());
                       // OutputStreamWriter os = new OutputStreamWriter(conn.getOutputStream());                         //Prepare the connection for output

                        POST_PARAMS =  params.toString();     //Converts post parameters to body type

                        System.out.println(POST_PARAMS);
                        try(OutputStream os = conn.getOutputStream()) {
                            byte[] input = POST_PARAMS.getBytes("utf-8");
                            os.write(input, 0, input.length);
                            os.flush();
                            os.close();
                        }
                        //os.write(POST_PARAMS);                                                           //Write our parameters to the post
                        //os.flush();                                                                                 //Do the thing
                        //os.close();

                        Log.i("STATUS", String.valueOf(conn.getResponseCode()));                               //Debug
                        Log.i("MSG", conn.getResponseMessage());                                               //Debug

                        int responseCode = 0;                                                                       //get response code
                        responseCode = conn.getResponseCode();

                        if (responseCode == HttpURLConnection.HTTP_OK) {                                            //On success
                                mEdit.setText("");
                        }
                        conn.disconnect();                                                                          //disconnect after attempting post
                        getMessage();                                                                               //update our messages
                    } catch (Exception e) {                                                                         //dirty catch all
                        e.printStackTrace();
                    }
                }
            });
            thread.start();
        }
    }
0 Answers
Related