6

我一直在尝试将图像和数据上传到Django服务器。我已经包含apache-mime4j.0.6.jarhttpmime4.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

尝试创建新的应用程序,包括库。我遇到了同样的错误。我已经尝试了所有可能的方法。谁能告诉我为什么会发生这种情况以及如何解决它。任何帮助将不胜感激!!

4

4 回答 4

1

如果您使用的是新的android-sdk试试这个。

  1. 创建文件夹命名为libs
  2. 将您的 jar 文件粘贴到该文件夹​​中。
  3. 最后右键单击您的项目 > 构建路径 > 添加外部存档。

就是这样。这可能会有所帮助。祝你好运。

于 2012-11-02T06:16:40.160 回答
0

我建议你使用spring-android 它是一个很好的 android 的 rest api 库,使用 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);

正如谷歌建议的那样,在姜饼和更高的 api 级别上使用和使用 Apache http 客户端非常容易。

于 2012-11-02T06:59:10.057 回答
0

我使用 . 将图像从 Android 上传到 Django 服务器httpmime-4.2.1.jar。那是我包含的唯一库,它工作正常。顺便说一句:库应该位于 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();
    }
}
于 2012-11-02T06:16:27.623 回答
0

我遇到了同样的问题,我用这种方式解决了:在 java build path 窗口中,单击 Order and Export 选项卡 突出显示要添加的库,然后单击 up(首先上传 lib)

单击确定,一切都很好。

这是一个带照片的链接(Android Eclipse NoClassDefFoundError for external .jar files

于 2014-05-13T15:23:03.330 回答