простой POST-файл HttpURLConnection multipart / form-data из Android в Google Blobstore

Я очень мало знаю, как работает HTML. То, что я хочу сделать, в точности похоже на следующеено на андроид

<body>
    <form action="<%= some_url %>" method="post" enctype="multipart/form-data">
        <input type="file" name="myFile">
        <input type="submit" value="Submit">
    </form>
</body>

Я попробовал следующий код -

private static void postToUrl(String url_to_upload_on,
        String file_name_with_ext, byte[] byteArray) {

    String attachmentName = "file";
    String attachmentFileName = file_name_with_ext;
    String crlf = "\r\n";
    String twoHyphens = "--";
    String boundary =  "*****";

    try{

    URL url = new URL(url_to_upload_on);
    HttpURLConnection connection = (HttpURLConnection) url.openConnection();
    connection.setDoOutput(true);
    connection.setRequestMethod("POST");

    connection.setRequestProperty(
        "Content-Type", "multipart/form-data;boundary=" + boundary);
    DataOutputStream request = new DataOutputStream(
            connection.getOutputStream()); 
    request.writeBytes(twoHyphens + boundary + crlf);
    request.writeBytes("Content-Disposition: form-data; name=\"" +
        attachmentName + "\";filename=\"" + 
        attachmentFileName + "\"" + crlf);
    request.writeBytes(crlf);
    request.write(byteArray);
    request.writeBytes(crlf);
    request.writeBytes(twoHyphens + boundary + 
        twoHyphens + crlf);
    request.flush();
    request.close();

    }catch(Exception e){
        e.printStackTrace();
    }


}

это не дает мне прямых ошибок, но когда я получаю поток ошибок, используя

 Log.w(TAG, "connection.getErrorStream() = " +      connection.getErrorStream());

я понял это

12-14 18:25:54.911: W/uploadToBlobStore(30558): httpUrlConnection.getErrorStream() = com.android.okhttp.internal.http.HttpTransport$FixedLengthInputStream@426dd5a8

без успеха.

PS - Я загружаю файл в Google Blobstore

PS - Я не могу использовать библиотеки Apache http или его составной класс, так как Android говорит, что он устарел

РЕДАКТИРОВАТЬ 1

Сейчас я использую следующий код, но он работает только для файлов менее 2,3 Мб -

private static void postToUrl3(String url_to_upload_on,
        String file_name_with_ext, byte[] byteArray, String mimeType) {

    CloseableHttpClient httpClient = null;

    try {

        httpClient = HttpClientBuilder.create().build();

        HttpPost postRequest = new HttpPost(url_to_upload_on);


        MultipartEntityBuilder reqEntity = MultipartEntityBuilder.create();
        reqEntity.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);            
        ByteArrayBody bab = new ByteArrayBody(byteArray, file_name_with_ext);           
        reqEntity.addPart("file", bab);         
        postRequest.setEntity(reqEntity.build());


        httpClient.execute(postRequest);// takes time

    } catch (Exception e) {
        Log.w("uploadToBlobStore", "postToUrl Exception e = " + e);
        e.printStackTrace();
    } finally {
        if (httpClient != null) {
            Log.w("uploadToBlobStore", "connection.closing ");
            try {
                httpClient.close();
            } catch (IOException e) {
                Log.w("uploadToBlobStore", "connection.closing errot e = "
                        + e);
                e.printStackTrace();
            }
        }
    }
}

как заставить работать с большими файлами?

PS- я отправляю его в интернет-магазин и установилmaxUploadSizeBytesа такжеMaxUploadSizeBytesPerBlob до 30 МБ. Я не могу выяснить проблему с размером, потому что документация Google Blobstore говорит -

Google App Engine включает службу Blobstore, которая позволяет приложениям обслуживать объекты данных, ограниченные только объемом данных, которые можно загружать или загружать через одно соединение HTTP.

Так может ли быть проблема с http-соединением? и если да, то как я могу его настроить.

Ответы на вопрос(4)

Ваш ответ на вопрос