6 Stimmen

Multi-Part-POST mit Datei und String in HTTPClient 4.1

Ich muss eine Multi-Teil-POST-Anfrage erstellen, die Felder enthält: update[image_title] = String update[image] = Bild-Daten selbst. Wie Sie sehen können, sind beide in einem assoziativen Array namens "update" enthalten. Wie könnte ich das mit HTTPClient 4.1 machen, denn ich habe nur Beispiele für die 3.x-Version dieser Bibliothek gefunden.

Vielen Dank im Voraus.

13voto

Niks Punkte 4692

Vielleicht zu spät, aber könnte jemandem helfen. Ich hatte genau dasselbe Problem. Angenommen, Sie haben ein Dateiobjekt, das alle notwendigen Informationen über das Bild enthält

HttpPost post = new HttpPost(YOUR_URL);
MultipartEntity entity = new MultipartEntity();
ByteArrayBody body = new ByteArrayBody(file.getData(), file.getName());     
String imageTitle = new StringBody(file.getName());

entity.addPart("imageTitle", imageTitle);
entity.addPart("image", body);
post.setEntity(entity);
HttpClient client = new DefaultHttpClient();
HttpResponse response = null;
    try {
        response = client.execute(post);
    } catch (ClientProtocolException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }

Bitte beachten Sie, dass MultiPartEntity Teil des HttpMime-Moduls ist. Sie müssen also dieses Jar-Datei im lib-Verzeichnis platzieren oder als (Maven/Gradle)-Abhängigkeit einschließen.

1voto

mblinn Punkte 3224

Ja, ich habe es wirklich mühsam gefunden, HTTP-Client 4-Beispiele, usw. zu finden, da das allmächtige Google fast immer noch auf HTTP 3 verweist.

Wie dem auch sei, das letzte Beispiel auf dieser Seite - http://hc.apache.org/httpcomponents-client-ga/examples.html sollte das sein, was du willst.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X