我一直在尝试将图片和数据上传到 Django 服务器。我添加了apache-mime4j.0.6.jar
和httpmime4.0.1.jar
个库(项目 - >构建路径 - >添加外部jar文件)
这是上传图片的代码。
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
尝试创建包括库在内的新应用程序。我遇到了同样的错误。我已尽力了。谁能告诉我为什么会发生这种情况以及如何解决它。任何帮助将不胜感激!!
答案 0 :(得分:1)
如果您使用新的android-sdk
请尝试此操作。
libs
就是这样。这可能会有所帮助。祝你好运。
答案 1 :(得分:0)
我使用httpmime-4.2.1.jar
将图像从Android上传到Django服务器。这是我包含的唯一一个库,它工作正常。顺便说一下:库应该在Android项目的libs文件夹中。
这是我用于上传的代码。
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();
}
}
答案 2 :(得分:0)
我建议你使用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);
很容易在姜饼上使用Apache http客户端,在姜饼上使用java.net.urlconnection,谷歌建议使用更高的api级别。
答案 3 :(得分:0)
我有同样的问题,我用这种方式解决了:在java构建路径窗口中,单击Order and Export选项卡突出显示要添加的库,然后单击up(将lib上传为第一个)
点击确定,一切都很好。
以下是包含照片的链接(Android Eclipse NoClassDefFoundError for external .jar files)