Загружайте файлы с помощью пользовательского запроса сообщения тела Volley - PullRequest
0 голосов
/ 04 февраля 2019

Мне нужно отправить 2 файла на сервер с помощью библиотеки залпа в Android.Вот пример того, как это хорошо работает в Почтальоне: example Мне нужно воспроизвести этот точно вызов POST в Android.Пожалуйста, посмотрите на мой код сейчас (который не работает):

JsonObjectRequest sr = new JsonObjectRequest(Request.Method.POST, URL, new JSONObject(params), new Response.Listener<JSONObject>() {
        @Override
        public void onResponse(JSONObject response) {

            Log.i("Response", response.toString());

        }
    }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {

            Log.e("VOLLEY", error.toString());
        }
    }){
        @Override
        protected Map<String,String> getParams(){
            Map<String,String> params = new HashMap<>();
            params.put("Urine", "test");

            return params;
        }

        @Override
        public Map<String, String> getHeaders() {
            Map<String,String> params = new HashMap<>();
            params.put("Authorization", "token");
            return params;
        }

        @Override
        public String getBodyContentType() {
            return "application/x-www-form-urlencoded; charset=utf-8";
        }

        @Override
        public byte[] getBody() {
            int size = (int) file.length();
            byte[] bytes = new byte[size];
            try {
                BufferedInputStream buf = new BufferedInputStream(new FileInputStream(file));
                buf.read(bytes, 0, bytes.length);
                buf.close();
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
            return bytes;
        }

        @Override
        protected Response<JSONObject> parseNetworkResponse(NetworkResponse response) {
            byte[] data = response.data;
            String message = new String(data);
            Log.i("parseNetworkResponse", String.valueOf(message));

            return super.parseNetworkResponse(response);
        }
    };

Как я могу реализовать это с помощью библиотеки Volley?Благодарю.

1 Ответ

0 голосов
/ 04 февраля 2019

Retrofit 2, на мой взгляд, стал намного более удобной и простой библиотекой для загрузки файлов.

Вот хороший и простой способ проработки.Это должно помочь вам.

Дооснащение 2 - загрузка нескольких файлов

...