В течение последнего времени я пытался загрузить изображение на свой сервер, и мой код работает при загрузке с жесткого диска на моем компьютере, но когда я использую точно такой же код в своем приложении для Android, я сталкиваюсь с этой ошибкой:
E/AndroidRuntime(26170): Caused by: java.lang.ExceptionInInitializerError
Вот мой код:
public String uploadFile(File imageFile) {
FormDataMultiPart form = new FormDataMultiPart().field("content", imageFile, MediaType.MULTIPART_FORM_DATA_TYPE)
WebResource webResource = Client.create().resource(serverURL);
ClientResponse response = webResource.type(MediaType.MULTIPART_FORM_DATA).accept(MediaType.APPLICATION_JSON).post(ClientResponse.class, form);
return response.toString();
}
Это первая строка метода, которая обнаруживает ошибку на устройствах Android.Вот это:
FormDataMultiPart form = new FormDataMultiPart().field("content", imageFile, MediaType.MULTIPART_FORM_DATA_TYPE)
Единственная переменная - это imageFile, и когда я решил запустить этот код в обычном приложении Java (в отличие от приложения для Android), загрузка изображения работает без проблем.
У меня есть это разрешение в моем манифесте Android:
Кроме того, непосредственно перед тем, как я обнаружил ошибку, я решил распечатать всю информацию, которую мог получить с файлом, и все было правильно, поэтому я уверен, что это правильный файл и он не нулевой.
Я использую библиотеки Джерси, чтобы попытаться это сделать, поскольку у Scribe были проблемы с загрузкой файлов.
Кто-нибудь знает, почему я получаю эту ошибку только на устройствах Android?
РЕДАКТИРОВАТЬ
Вот трассировка стека ошибки.Строка 733 - это строка:
FormDataMultiPart form = new FormDataMultiPart().field("content", imageFile, MediaType.MULTIPART_FORM_DATA_TYPE)
![Jersey Error Stack Trace](https://i.stack.imgur.com/eNPJ5.png)