Android размещает изображение на сервере с помощью MultipartEntity
Я пытался загрузить изображение и данные на сервер Django. Я включил apache-mime4j.0.6.jar
а также httpmime4.0.1.jar
библиотеки ( Project->build path->Add external jar files) И вот код для загрузки изображения.
HttpResponse response = null;
try {
HttpPost httppost = new HttpPost("http://10.0.2.2:8000/mobile");
// HttpPost httppost = new HttpPost("some url");
MultipartEntity multipartEntity = new MultipartEntity(); //MultipartEntity multipartEntity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE);
multipartEntity.addPart("name", new StringBody("nameText"));
multipartEntity.addPart("place", new StringBody("placeText"));
multipartEntity.addPart("tag", new StringBody("tagText"));
//multipartEntity.addPart("Description", new StringBody(Settings.SHARE.TEXT));
multipartEntity.addPart("Image", new FileBody(destination));
httppost.setEntity(multipartEntity);
httpclient.execute(httppost, new PhotoUploadResponseHandler());
} catch (Exception e) {
Log.e( "Error","error");
}
Сообщение об ошибке:
Could not find class 'org.apache.http.entity.mime.MultipartEntity'
И я попытался вручную создать папку libs и вручную включить файлы jar в папку /libs. Когда я делаю это, он не компилируется.
Ошибка:
Conversion to Dalvik format failed with error 1 Unknown Android Packaging Problem
Пробовал создавать свежие приложения, в том числе библиотеки. И я столкнулся с той же ошибкой. Я перепробовал все возможное. Может кто-нибудь сказать мне, почему это происходит и как это исправить. Любая помощь будет принята с благодарностью!
4 ответа
Если вы используете новый android-sdk
Попробуй это.
- Создать папку с именем как
libs
- Вставьте файл JAR в эту папку.
- И, наконец, щелкните правой кнопкой мыши свой проект> Путь сборки> Добавить внешний архив.
Вот и все. Это может помочь. Удачи.
Я загружаю изображение с Android на сервер Django, используя httpmime-4.2.1.jar
, Это единственная библиотека, которую я включил, и она отлично работает. Кстати, библиотеки должны находиться в папке libs в проектах Android.
это код, который я использую для загрузки.
private JSONObject uploadImage(String url, File img) throws Exception{
url = addAuthToken(url);
HttpPost post = new HttpPost(url);
MultipartEntity reqEntity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE);
FileBody fileBody = new FileBody(img, "images/jpeg");
reqEntity.addPart("image", fileBody);
post.setEntity(reqEntity);
JSONObject ret = baseRequest(post);
checkReturnStatus(ret, 201);
return ret;
}
private JSONObject baseRequest(HttpUriRequest request) throws Exception{
HttpClient client = new DefaultHttpClient();
HttpResponse response = client.execute(request);
BufferedReader in = null;
try{
in = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
StringBuffer sb = new StringBuffer();
String line = null;
String NL = System.getProperty("line.separator");
while ((line = in.readLine()) != null) {
sb.append(line + NL);
}
return new JSONObject(sb.toString());
}finally {
if(in != null) in.close();
}
}
Я предлагаю вам использовать Spring-Android Это хорошая библиотека API для отдыха для Android, а с Spring-Android, вы можете легко загрузить файл, как это.
HttpHeaders requestHeaders = ....
MultiValueMap<String, Object> message = new LinkedMultiValueMap<String, Object>();
message.add("qqfile", new FileSystemResource(filePath)); //attach file
HttpEntity<MultiValueMap<String, Object>> requestEntity = new HttpEntity<MultiValueMap<String, Object>>(
message, requestHeaders);
RestTemplate restTemplate = RestUtil.getRestTemplate( context);
ResponseEntity<YourResultDTO> response = restTemplate.exchange(url, HttpMethod.POST, requestEntity,YourResultDTO.class);
Он очень прост в использовании и использовании http-клиента Apache для pre gingerbread и java.net.urlconnection для gingerbread и более высокого уровня API, как предлагает Google.
У меня была та же проблема, и я решил ее следующим образом: в окне пути сборки java, перейдите на вкладку "Порядок и экспорт". Выделите библиотеку, которую вы хотите добавить, затем нажмите вверх (загрузите lib, чтобы быть первым).
Нажмите ОК, и все в порядке.
Вот ссылка с фотографиями ( Android Eclipse NoClassDefFoundError для внешних.jar файлов)