2016-09-03 1 views
0

Я использую OKhttp для сетевых запросов. Попытка загрузить изображение на сервер. Так я и пытался, но он не работает. Что я делаю не так?Загрузить изображение на сервер с помощью okhttp

client = new OkHttpClient.Builder() 
       .build(); 

     ByteArrayOutputStream stream = new ByteArrayOutputStream(); 
     bitmap.compress(Bitmap.CompressFormat.JPEG, 100, stream); 
     byte[] byteArray = stream.toByteArray(); 
     String encodedImage = Base64.encodeToString(byteArray, Base64.DEFAULT); 

     RequestBody requestBody = new MultipartBody.Builder() 
       .setType(MultipartBody.FORM) 
       .addFormDataPart("", "", 
         RequestBody.create(MediaType.parse("image/*"), encodedImage)) 
       .build(); 

     Request request = new Request.Builder() 
       .url(serverUrl) 
       .post(requestBody) 
       .build(); 

     client.newCall(request).enqueue(new Callback() { 
      @Override 
      public void onFailure(Call call, IOException e) { 

      } 

      @Override 
      public void onResponse(Call call, Response response) throws IOException { 

      } 
     }); 
    } 
+0

«Но это не работает»: Как это «не работает»? Сбой? Нет соединения? Вы должны быть более подробными, и если произошел сбой, добавьте logcat – Zoe

+0

Если вы пытаетесь ускорить работу, используйте [Volley] (https://developer.android.com/training/volley/index.html) вместо , Если вы действительно хотите получить помощь, просьба дать более подробную информацию, такую ​​как logcat. – tpk

+0

Почему вы используете кодировку base64? –

ответ

0

Вам не нужно base64-кодирования данных изображения, просто использовать byteArray:

.addFormDataPart("image", "filename.jpg", 
       RequestBody.create(MediaType.parse("image/*jpg"), byteArray))