Télécharger le fichier par HTTP POST
Je veux télécharger un fichier (une image en particulier) à un REPOS Serveur à l'aide de HTTP POST
. J'ai déjà importé/ajouter à construire chemin httpmime-4.3.1.jar
et apache-mime4j-0.6.jar
. Et je suis le suivi des erreurs ci-dessous dans la Trace de la Pile.
Est-ce valable? post.setHeader("enctype", "multipart/form-data");
HTTP POST Code
public void multiPartPost() throws ClientProtocolException, IOException {
File image = new File(EXTERNALSTORAGE + "/Pictures/sample.jpg");
FileBody fileBody = new FileBody(image);
HttpClient client = new DefaultHttpClient();
HttpPost post = new HttpPost(url);
post.setHeader("enctype", "multipart/form-data");
MultipartEntityBuilder multipartEntity = MultipartEntityBuilder.create();
multipartEntity.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);
multipartEntity.addPart("sampleImage", fileBody);
post.setEntity(multipartEntity.build());
HttpResponse response = client.execute(post);
String responseBody = EntityUtils.toString(response.getEntity());
Log.v("multiPartPost HTTP Response", responseBody);
}
Trace De La Pile
01-05 17:41:25.470: W/dalvikvm(6564): VFY: unable to resolve static field 1755 (DEFAULT_BINARY) in Lorg/apache/http/entity/ContentType;
01-05 17:41:25.470: D/dalvikvm(6564): VFY: replacing opcode 0x62 at 0x0000
01-05 17:41:25.470: I/dalvikvm(6564): Could not find method org.apache.http.entity.ContentType.create, referenced from method org.apache.http.entity.mime.content.FileBody.<init>
01-05 17:41:25.470: W/dalvikvm(6564): VFY: unable to resolve static method 6613: Lorg/apache/http/entity/ContentType;.create (Ljava/lang/String;)Lorg/apache/http/entity/ContentType;
01-05 17:41:25.470: D/dalvikvm(6564): VFY: replacing opcode 0x71 at 0x0000
01-05 17:41:25.470: I/dalvikvm(6564): Could not find method org.apache.http.entity.ContentType.create, referenced from method org.apache.http.entity.mime.content.FileBody.<init>
01-05 17:41:25.470: W/dalvikvm(6564): VFY: unable to resolve static method 6614: Lorg/apache/http/entity/ContentType;.create (Ljava/lang/String;Ljava/lang/String;)Lorg/apache/http/entity/ContentType;
01-05 17:41:25.470: D/dalvikvm(6564): VFY: replacing opcode 0x71 at 0x0000
01-05 17:41:25.470: W/dalvikvm(6564): VFY: unable to find class referenced in signature (Lorg/apache/http/entity/ContentType;)
01-05 17:41:25.470: W/dalvikvm(6564): VFY: unable to find class referenced in signature (Lorg/apache/http/entity/ContentType;)
01-05 17:41:25.478: W/dalvikvm(6564): VFY: unable to find class referenced in signature (Lorg/apache/http/entity/ContentType;)
01-05 17:41:25.478: W/dalvikvm(6564): VFY: unable to find class referenced in signature (Lorg/apache/http/entity/ContentType;)
01-05 17:41:25.478: I/dalvikvm(6564): Could not find method org.apache.http.util.Args.notNull, referenced from method org.apache.http.entity.mime.content.FileBody.<init>
01-05 17:41:25.478: W/dalvikvm(6564): VFY: unable to resolve static method 6808: Lorg/apache/http/util/Args;.notNull (Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object;
01-05 17:41:25.478: D/dalvikvm(6564): VFY: replacing opcode 0x71 at 0x0005
01-05 17:41:25.478: I/dalvikvm(6564): Could not find method org.apache.http.util.Args.notNull, referenced from method org.apache.http.entity.mime.content.FileBody.writeTo
01-05 17:41:25.478: W/dalvikvm(6564): VFY: unable to resolve static method 6808: Lorg/apache/http/util/Args;.notNull (Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object;
01-05 17:41:25.478: D/dalvikvm(6564): VFY: replacing opcode 0x71 at 0x0002
01-05 17:41:25.478: I/dalvikvm(6564): Could not find method org.apache.http.entity.ContentType.parse, referenced from method org.apache.http.entity.mime.content.AbstractContentBody.<init>
01-05 17:41:25.478: W/dalvikvm(6564): VFY: unable to resolve static method 6618: Lorg/apache/http/entity/ContentType;.parse (Ljava/lang/String;)Lorg/apache/http/entity/ContentType;
01-05 17:41:25.486: D/dalvikvm(6564): VFY: replacing opcode 0x71 at 0x0000
01-05 17:41:25.486: W/dalvikvm(6564): VFY: unable to find class referenced in signature (Lorg/apache/http/entity/ContentType;)
01-05 17:41:25.486: I/dalvikvm(6564): Could not find method org.apache.http.util.Args.notNull, referenced from method org.apache.http.entity.mime.content.AbstractContentBody.<init>
01-05 17:41:25.486: W/dalvikvm(6564): VFY: unable to resolve static method 6808: Lorg/apache/http/util/Args;.notNull (Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object;
01-05 17:41:25.486: D/dalvikvm(6564): VFY: replacing opcode 0x71 at 0x0005
01-05 17:41:25.486: I/dalvikvm(6564): Could not find method org.apache.http.entity.ContentType.getCharset, referenced from method org.apache.http.entity.mime.content.AbstractContentBody.getCharset
01-05 17:41:25.486: W/dalvikvm(6564): VFY: unable to resolve virtual method 6616: Lorg/apache/http/entity/ContentType;.getCharset ()Ljava/nio/charset/Charset;
01-05 17:41:25.486: D/dalvikvm(6564): VFY: replacing opcode 0x6e at 0x0002
01-05 17:41:25.486: W/dalvikvm(6564): VFY: unable to find class referenced in signature (Lorg/apache/http/entity/ContentType;)
01-05 17:41:25.486: I/dalvikvm(6564): Could not find method org.apache.http.entity.ContentType.getMimeType, referenced from method org.apache.http.entity.mime.content.AbstractContentBody.getMediaType
01-05 17:41:25.486: W/dalvikvm(6564): VFY: unable to resolve virtual method 6617: Lorg/apache/http/entity/ContentType;.getMimeType ()Ljava/lang/String;
01-05 17:41:25.486: D/dalvikvm(6564): VFY: replacing opcode 0x6e at 0x0002
01-05 17:41:25.493: I/dalvikvm(6564): Could not find method org.apache.http.entity.ContentType.getMimeType, referenced from method org.apache.http.entity.mime.content.AbstractContentBody.getMimeType
01-05 17:41:25.493: W/dalvikvm(6564): VFY: unable to resolve virtual method 6617: Lorg/apache/http/entity/ContentType;.getMimeType ()Ljava/lang/String;
01-05 17:41:25.493: D/dalvikvm(6564): VFY: replacing opcode 0x6e at 0x0002
01-05 17:41:25.493: I/dalvikvm(6564): Could not find method org.apache.http.entity.ContentType.getMimeType, referenced from method org.apache.http.entity.mime.content.AbstractContentBody.getSubType
01-05 17:41:25.493: W/dalvikvm(6564): VFY: unable to resolve virtual method 6617: Lorg/apache/http/entity/ContentType;.getMimeType ()Ljava/lang/String;
01-05 17:41:25.493: D/dalvikvm(6564): VFY: replacing opcode 0x6e at 0x0002
01-05 17:41:25.493: W/dalvikvm(6564): threadid=11: thread exiting with uncaught exception (group=0x40dc51f8)
01-05 17:41:25.501: E/AndroidRuntime(6564): FATAL EXCEPTION: AsyncTask #1
01-05 17:41:25.501: E/AndroidRuntime(6564): java.lang.RuntimeException: An error occured while executing doInBackground()
01-05 17:41:25.501: E/AndroidRuntime(6564): at android.os.AsyncTask$3.done(AsyncTask.java:287)
01-05 17:41:25.501: E/AndroidRuntime(6564): at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:273)
01-05 17:41:25.501: E/AndroidRuntime(6564): at java.util.concurrent.FutureTask.setException(FutureTask.java:124)
01-05 17:41:25.501: E/AndroidRuntime(6564): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:307)
01-05 17:41:25.501: E/AndroidRuntime(6564): at java.util.concurrent.FutureTask.run(FutureTask.java:137)
01-05 17:41:25.501: E/AndroidRuntime(6564): at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:217)
01-05 17:41:25.501: E/AndroidRuntime(6564): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
01-05 17:41:25.501: E/AndroidRuntime(6564): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
01-05 17:41:25.501: E/AndroidRuntime(6564): at java.lang.Thread.run(Thread.java:856)
01-05 17:41:25.501: E/AndroidRuntime(6564): Caused by: java.lang.NoClassDefFoundError: org.apache.http.entity.ContentType
01-05 17:41:25.501: E/AndroidRuntime(6564): at org.apache.http.entity.mime.content.FileBody.<init>(FileBody.java:89)
01-05 17:41:25.501: E/AndroidRuntime(6564): at com.medusa.checkit.HTTPPostRequest.multiPartPost(HTTPPostRequest.java:79)
01-05 17:41:25.501: E/AndroidRuntime(6564): at com.medusa.checkit.MenuActivity$BackgroundTask.doInBackground(MenuActivity.java:79)
01-05 17:41:25.501: E/AndroidRuntime(6564): at com.medusa.checkit.MenuActivity$BackgroundTask.doInBackground(MenuActivity.java:1)
01-05 17:41:25.501: E/AndroidRuntime(6564): at android.os.AsyncTask$2.call(AsyncTask.java:273)
01-05 17:41:25.501: E/AndroidRuntime(6564): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
01-05 17:41:25.501: E/AndroidRuntime(6564): ... 5 more
OriginalL'auteur The Nomad | 2014-01-06
Vous devez vous connecter pour publier un commentaire.
Vous semblent manquer une dépendance.
J'ai
httpclient-4.2.5
,httpcleint-cache-4.2.5
,httpcore-4.2.4
ethttpmime-4.2.5
aveccommons-lang3-3.1
etcommons-logging-1.1.2
pots dans mon chemin de classe.J'utilise aussi
entity.addPart(formFieldName, new FileBody(file, "image/jpeg"));
au lieu d'utiliser l'en-tête de la propriété.Prendre un coup d'oeil à Internet type de média pour plus de détails
Que fait un changement agréable 😉
Aussi, la raison pour laquelle j'ai été en utilisant
setHeader
était parce que lors du téléchargement vers le RESTE du serveur, il ne serait pas le mettre dans leFILES
dossier. Et semble-t-ilenctype=multipart/form-data
le fait. Serais-je capable d'utiliserenctype=multipart/form-data
comme deuxième paramètre deFileBody
?Ne sais pas, donnez-lui de l'essayer. Rappelez-vous, si c'est déjà au travail, alors vous pourriez avoir besoin d'elle. Il était le seul (important) différences que j'ai pu voir entre votre code et mon code 😉
Merci de ne pas modifier les réponses, il les ruines qu'il ne cesse entre la question et accostée plus récent, au lieu de cela, laisser des commentaires qui mettent en évidence les changements de l'API, en indiquant la version de la modification a eu lieu, comme tout le monde ne sera en utilisant la même version...
OriginalL'auteur MadProgrammer