Отправка файла с httpurlconnection ответом сервера является badrequest (400)? - PullRequest
0 голосов
/ 02 июля 2019

У меня есть код, который работал для отправки файлов на сервер, я использовал его в приложении для продаж, но я хочу использовать его в другом приложении, и он не работает для меня.

    String sourceFileUri = root.toString()+"/"+filename;
    HttpURLConnection conn = null;
    DataOutputStream dos = null;
    String lineEnd = "\r\n";
    String twoHyphens = "--";
    String boundary = "*****";
    int bytesRead, bytesAvailable, bufferSize;
    byte[] buffer;
    int maxBufferSize = 1 * 1024 * 1024;
    File sourceFile = new File(sourceFileUri);
    //File sourceFile = root;

    if (sourceFile.isFile()) {
        try {
             String upLoadServerUri = 
           "http://www.tucuenca.com/cspm/cargar_archivo.php";
             FileInputStream fileInputStream = new FileInputStream(
                    sourceFile);
            URL url = new URL(upLoadServerUri);
            // Open a HTTP connection to the URL
            conn = (HttpURLConnection) url.openConnection();
            //conn.setDoInput(true); // Allow Inputs
            conn.setDoOutput(true); // Allow Outputs
            conn.setUseCaches(false); // Don't use a Cached Copy
            //conn.setConnectTimeout (5000) ;

            conn.setRequestProperty("Connection", "Keep-Alive");
            conn.setRequestProperty("ENCTYPE",
                    "multipart/form-data");
            conn.setRequestProperty("Content-Type",
                    "multipart/form-data;boundary=" + boundary);
            conn.setRequestProperty("bill", sourceFileUri);
            conn.setRequestMethod("POST");
            dos = new DataOutputStream(conn.getOutputStream());
            dos.writeBytes(twoHyphens + boundary + lineEnd);
            dos.writeBytes("Content-Disposition: form-data; 
            name=\"bill\";filename=\""
                    + sourceFileUri + "\"" + lineEnd);

            dos.writeBytes(lineEnd);

            // create a buffer of maximum size
            bytesAvailable = fileInputStream.available();

            bufferSize = Math.min(bytesAvailable, maxBufferSize);
            buffer = new byte[bufferSize];

            // read file and write it into form...
            bytesRead = fileInputStream.read(buffer, 0, bufferSize);
            while (bytesRead > 0) {

                dos.write(buffer, 0, bufferSize);
                bytesAvailable = fileInputStream.available();
                bufferSize = Math
                        .min(bytesAvailable, maxBufferSize);
                bytesRead = fileInputStream.read(buffer, 0,
                        bufferSize);

            }

            // send multipart form data necesssary after file
            // data...
            dos.writeBytes(lineEnd);
            dos.writeBytes(twoHyphens + boundary + twoHyphens
                    + lineEnd);

            // Responses from the server (code and message)
            serverResponseCode = conn.getResponseCode();
            String serverResponseMessage = conn
                    .getResponseMessage();
            if (serverResponseCode == 200) {
                Log.i(TAG, "enviarArchivo: Cargar completa");
                BufferedReader in=new BufferedReader(
                new InputStreamReader(conn.getInputStream()));
                StringBuffer sb= new StringBuffer("");
                String line="";
                while((line=in.readLine())!=null){
                    sb.append(line);
                    break;
                }
                resul=sb.toString();
                in.close();
                // showSuccessMessage("El servidor responde "+resul);

            }else if(serverResponseCode==400){
                Log.i(TAG, "enviarArchivo: error 400 "+resul);
               // showSuccessMessage("Error en el servidor");
            }
            // close the streams //
            fileInputStream.close();
            dos.flush();
            dos.close();

Сервер отвечает мне кодом 400, неверный запрос, URL активен и работает (http://www.tucuenca.com/cspm/cargar_archivo.php), Я делаю тесты в huawei с android 9.

Жду ваших комментариев.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...