#android #base64 #okhttp
#Android #base64 #okhttp
Вопрос:
Как следует из названия, я кодирую строку Base64. Я делаю это так:
public String getStringFile2(File file){
String retorno="";
InputStream inputStream = null;//You can get an inputStream using any IO API
try {
inputStream = new FileInputStream(file.getAbsolutePath());
byte[] video = new byte[inputStream.available()];
byte[] base64 = Base64.encode(video,Base64.NO_WRAP);
String s = new String(base64, "UTF8");
retorno=s;
} catch (FileNotFoundException e) {
Log.i("David", "FileNotFoundException");
e.printStackTrace();
} catch (IOException e) {
Log.i("David", "IOException");
e.printStackTrace();
}
Log.i("David", retorno);
return retorno;
}
После этого я отправляю ее на сервер таким образом:
public void videoUploadTo()
{
final OkHttpClient cliente=new OkHttpClient();
File file=new File(vidPath);
HttpUrl.Builder urlBuilder = HttpUrl.parse(getString(R.string.sendvideourl)).newBuilder();
String video=getStringFile2(file);
String url = urlBuilder.build().toString();
RequestBody requestBody = new MultipartBody.Builder()
.setType(MultipartBody.FORM)
.addFormDataPart("operatingsystem", "Android")
.addFormDataPart("mobilemodel",Utils.getDeviceName())
.addFormDataPart("mobileversion",String.valueOf(Utils.getAndroidVersion()))
.build();
Request request=new Request.Builder()
.post(requestBody)
.addHeader("eid", String.valueOf(almacen.getEvento().getId()))
.addHeader("token",almacen.getToken())
.addHeader("video",video)
.url(url)
.build();
cliente.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
Log.i("David", "onFailure");
e.printStackTrace();
}
@Override
public void onResponse(Call call, Response response) throws IOException {
Log.i("David", "onResponse");
}
});
}
(Да, мне нужно отправить информацию в заголовках)
Почему это сбой? Я думаю, что это не тайм-аут, потому что получение ответа не занимает слишком много времени.
Любая помощь? Спасибо.
РЕДАКТИРОВАТЬ: если я комментирую строку .AddHeader («video», video), я получаю 200 … но мне нужно отправить эту строку.
Комментарии:
1. Вы кодируете пустой
video
буфер. Кроме того, вам также не следует возиться с кодировкой utf-8.2.
IOException e
Вы не регистрируете и не сообщаете нам значениеe.getMessage()
.3.
I am getting onFailure ....
Это ваше собственное сообщение. Вы отбрасываете реальное сообщение.4. Сообщения нет…
5. Он имеет случайное содержимое в зависимости от использования этой выделенной памяти ранее. Но вы не загружаете свой файл в этот буфер.