'android multipart/form-data POST get 400 error

I should send text/image files to one website using POST method. But, I couldn't get 200 code after my MainActivity.

  • my code block
    String crlf = "\r\n";
    String twoHyphens = "--";
    String boundary = "*****";

    System.out.println("[Request] routine is started.");
    URL url = new URL(_url);
    urlConn = (HttpURLConnection) url.openConnection();


    // [2-1]. urlConn setting
    urlConn.setDoInput(true);
    urlConn.setDoOutput(true);
    urlConn.setUseCaches(false);
    urlConn.setRequestMethod("POST"); // URL method : POST.
    urlConn.setRequestProperty("Connection", "keep-alive");
    urlConn.setRequestProperty("Cache-Control", "no-cache");
    urlConn.setRequestProperty("Content-Type", "multipart/form-data;boundary=" + boundary);

    // [2-2]. parameter send and read data
    OutputStream os = urlConn.getOutputStream();
    DataOutputStream request = new DataOutputStream(os);

    // Write key and values
    // 1. Access Key
    request.writeBytes(twoHyphens + boundary + crlf);
    request.writeBytes("Content-Disposition: form-data; name=\"accessKey\"" + crlf);
    request.writeBytes("Content-Type: application/json" + crlf);
    request.writeBytes(crlf);
    request.writeBytes(accessKey + crlf);

    // 2. Image data
    request.writeBytes(twoHyphens + boundary + crlf);
    request.writeBytes("Content-Disposition: form-data; name=\"files\"" + crlf);
    request.writeBytes("Content-Type: image/jpeg" + crlf);
    request.writeBytes(crlf);
    request.write(imageBytes);

    request.writeBytes(crlf);
    request.writeBytes(twoHyphens + boundary + twoHyphens + crlf);
    request.flush();
    request.close();

    int response_code = urlConn.getResponseCode();
    System.out.println("Connection response code : [" + response_code + "]");

I think my DataOutputStream code is not bad, but I get 400 error:

I/System.out: [Request] routine is started.
D/EGL_emulation: app_time_stats: avg=45.59ms min=8.56ms max=670.08ms count=23
I/System.out: Connection response code : [400]
I/System.out: [doInBackground] output : Response Code : 400
I/System.out: [onPostExecute] routine is started.
I/System.out: [onPostExecute] output : Response Code : 400

What's wrong?



Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source