What does it fail to send my string String to my Post service?

1

Hi, I'm new working with Android Studio, I work in POST WEB SERVICE, I want to send a String string of base64, at the moment of sending my data to my string string you will generate "\" line breaks as you could solve my error:

HTTP REQUEST:

public class MainActivity extends AppCompatActivity {
    private ProgressDialog progress;


    String imageString = "R0lGODlhyADIAJEAAAAAAP////4BAgAAACH5BAAUAP8ALAAAAADIAMgAQAL/jI+py+0Po5y02ouz3rz7D4YTQJbmiabqyrauK8by8tb2jee6OvfHvvONgDlhj8gzypA4pYaJcsagNqmDarI6sS+t9zvltsDk8lPMMqsj6LZ4DW+459A4iI7PV+0Kvf+E8QewJpjGlyBI+HbIkaiGxtj4p8gVueFoBmn5ULhCibUZ0Fn0OGp62lSKusqaEtoKOyg3uRmrI4IZqrvL2+v762HrBzwjbNxFzHm8nEScS/bsq+lMm7mYPDuMvW0Rzf2drQc+rqxNvsTsdv6T3k7y6n574W0XL99dXQYLb65/fU5PyzSA+aD9+7VPFahkCa1VqtXuk72JQPhRnHOl4KGL/4BCBITDMYtHjetKmjyJMqXKlRBCImEpyWUQmGdk3qMZziYqkzpbYfsoBSjEfgaJSiPpRailgQiRxmF61OgXqOCUGqH6zaoQrNy04mTk9SufsGKfOi07VBzaplLX5uyJzC0buDd40j1l9+6ovHoLWdQb6KzEu4HbCvSZNs9gU3/xLN6b2LFCKnwVT65Tkiy6h+s0h+FM0LAVrts84zoYddVjIj8RO1y4NOJlJo2Nra4Y2fbsvhxv87ZX+3eNjKKDCr/ZR/CW46QYmF7u8nTx3cBHTpeLPbv27dy7e/8OPrz48eTLmzfAvJn49K7Is4/i/r3I8fLnY6+PMTP+NpX3U//W7x9o5ASIWi/P3aFcbNddlWAkB37wYFFqvWYZNQtu1SBYBfISoQ+kBadObi8xlCEYH4oYooKwAdNhTCsOWOIRG3YVYzEzllbjZi+O0+IlN7Z24Xk2BinkZxMWmVSOSAaj5JIuVuikcURG2UGPVM415ZU1Hamlh03i5F95YcaHn5j7mVkmgARi1tma/7XpJm1qxokbnHTW6eBvhXG5kZ7zfKmEcHtCqSFvg0qmImB/ZmnkTijyR51fj54YqGt5MiqdapP+CJ2miSLqj4A8AgohpxbyOZWpLJLKpKhVsVqlqmyhmqSrWcH6JJuh0XqYrTRiat2OrwKLoK84EluqsSCASkqhrrM62qycp0IbqrAcWirhm6uy4htyfabTbXOXMhNuKp/qFu2I5wpTbl2bchvpnZClKy9j8dZrZQb4NlTtvni9Wx9xvI5Wr8CEmljwW3S0+57BoGYbp8MLA7xMpgePJZPFD38bksYTr1tdsQMzjG6yI3eJcsoqr8xyyy4nUAAAOw==";


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        new SendRequest().execute();

    }

    public class SendRequest extends AsyncTask<String, Void, String> {

        protected void onPreExecute(){}

        @SuppressLint("LongLogTag")
        protected String doInBackground(String... arg0) {

            try{

                URL url = new URL("https://33s3cf3rql.execute-api.us-east-2.amazonaws.com/proofOfadress");

                JSONObject postDataParams = new JSONObject();

                postDataParams.put("SourceImage", imageString);

                Log.e("params",postDataParams.toString());

                HttpURLConnection conn = (HttpURLConnection) url.openConnection();
                conn.setReadTimeout(15000 /* milliseconds */);
                conn.setConnectTimeout(15000 /* milliseconds */);
                conn.setRequestMethod("POST");
                conn.setDoInput(true);
                conn.setDoOutput(true);

                OutputStream os = conn.getOutputStream();
                BufferedWriter writer = new BufferedWriter(
                        new OutputStreamWriter(os, "UTF-8"));
                writer.write(getPostDataString(postDataParams));

                writer.flush();
                writer.close();
                os.close();

                int responseCode=conn.getResponseCode();

                if (responseCode == HttpsURLConnection.HTTP_OK) {

                    BufferedReader in=new BufferedReader(new InputStreamReader(conn.getInputStream()));
                    StringBuffer sb = new StringBuffer("");
                    String line="";

                    while((line = in.readLine()) != null) {

                        sb.append(line);
                        break;
                    }

                    in.close();
                    return sb.toString();

                }
                else {
                    return new String("false : "+responseCode);
                }
            }
            catch(Exception e){
                return new String("Exception: " + e.getMessage());
            }
        }

        @Override
        protected void onPostExecute(String result) {
            Toast.makeText(getApplicationContext(), result,
                    Toast.LENGTH_LONG).show();

        }
    }

    public String getPostDataString(JSONObject params) throws Exception {

        StringBuilder result = new StringBuilder();
        boolean first = true;

        Iterator<String> itr = params.keys();

        while(itr.hasNext()){

            String key= itr.next();
            Object value = params.get(key);

            if (first)
                first = false;
            else
                result.append("&");

            result.append(URLEncoder.encode(key, "UTF-8"));
            result.append("=");
            result.append(URLEncoder.encode(value.toString(), "UTF-8"));

        }
        return result.toString();
    }
}
    
asked by Jose 10.04.2018 в 00:22
source

2 answers

0

The subject seems to be in

result.append(URLEncoder.encode(

there is encode ar in the send and decode ar when receiving especially base64 because it uses the characters = + and / / / /

Although thinking about it better, it seems to me that it is the toString that is doubled by the base64 /

edit: if that is the case try with .getBytes(); and / or .getBytes(StandardCharsets.UTF_8); instead of toString();

    
answered by 10.04.2018 / 00:50
source
0

Encode data using URLEncoder.encode () :

URLEncoder.encode(<datos>, "UTF-8")

example:

 postDataParams.put("SourceImage", URLEncoder.encode(imageString, "UTF-8"));
    
answered by 10.04.2018 в 00:55