6

画像とデータを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

ライブラリを含む新しいアプリケーションを作成しようとしました。そして、私は同じエラーに遭遇しました。私は可能な限りすべてを試しました。なぜこれが起こるのか、それを修正する方法を誰か教えてください。どんな助けでも大歓迎です!!

4

4 に答える 4

1

新しいものを使用している場合は、android-sdkこれを試してください。

  1. という名前のフォルダーを作成しますlibs
  2. jar ファイルをそのフォルダーに貼り付けます。
  3. 最後に、プロジェクトを右クリック > Build Path > Add External Archive をクリックします。

それだけです。これが役立つかもしれません。頑張ってください。

于 2012-11-02T06:16:40.160 に答える
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 ビルド パス ウィンドウで、[注文とエクスポート] タブをクリックします。

[OK] をクリックすると、すべて問題ありません。

ここに写真付きのリンクがあります(外部.jarファイルのAndroid Eclipse NoClassDefFoundError

于 2014-05-13T15:23:03.330 に答える
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);

Googleが示唆するように、ジンジャーブレッド以前のApache httpクライアントとジンジャーブレッドおよびより高いAPIレベルのjava.net.urlconnectionでApache httpクライアントを使用して使用するのは非常に簡単です。

于 2012-11-02T06:59:10.057 に答える