Java http-post multipart Daten

Ich bin mit Apache HttpComponents v4.3.6 (maven-httpclient und httpmime). Ich muss eine Datei hochladen, die Daten als " multipart. Die Fiddler ' Befehl, die arbeiten, die wie folgt aussieht.

- Request-header auf Fiddler:

Content-Type: multipart/form-data; boundary=c2d7073062e24d86ad739647574e14b9
Accept: application/json
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:22.0) Gecko/20100101 Firefox/22.0

- Request-body auf Fiddler:

--c2d7073062e24d86ad739647574e14b9
Content-Disposition: form-data; name="categoryFile"; filename="self-classification-categories.tsv"

585743  583099  Existing Catrali 4Category ch   Description of 4 Existing Category  false   false   false   Some notes 4 relating to Existing Category
--c2d7073062e24d86ad739647574e14b9--

Wo der eigentliche Inhalt der Datei ist :

585743  583099  Existing Catrali 4Category ch   Description of 4 Existing Category  false   false   false   Some notes 4 relating to Existing Category

Nun, ich bin versucht zu implementieren diesem post-request(wie oben beschrieben) mit dem Apache Http-Client, aber keine Ahnung haben, wie Sie es tatsächlich tun. Zum konvertieren der obigen Anfrage in Java (1.8), habe ich versucht: ( Grenzwert : c2d7073062e24d86ad739647574e14b9)

httpclient = HttpClients.createDefault();
HttpPost httpPost = new HttpPost( createPostURI( host, path ) );

httpPost.setHeader("User-Agent", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:22.0) Gecko/20100101 Firefox/22.0");
httpPost.setHeader("Content-Type", "multipart/form-data; boundary=c2d7073062e24d86ad739647574e14b9");
httpPost.setHeader("Accept", "application/json");


String fileContent = "--c2d7073062e24d86ad739647574e14b9\r\nContent-Disposition: form-data; name=\"categoryFile\"; filename=\"self-classification-categories.tsv\""+
                "\r\n\r\n"+
                "585743 583099  Existing Catrali 4Category ch   Description of 4 Existing Category  false   false   false   Some notes 4 relating to Existing Category"
                +"\r\n--c2d7073062e24d86ad739647574e14b9--";

MultipartEntityBuilder builder = MultipartEntityBuilder.create();
builder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);
builder.setBoundary("c2d7073062e24d86ad739647574e14b9");
builder.addTextBody("body", fileContent,ContentType.MULTIPART_FORM_DATA);

HttpEntity entity =  builder.build();
httpPost.setEntity( entity );

response = httpclient.execute( httpPost, new GenericResponseHandler() );

Ich bin sicher, dass die Art und Weise bin ich crafting die request-body in Java ist falsch. Also, ich sehen, Fehler 403, was irgendwie irreführend, da die REST-api, die ich rufe, wirft diese Fehlermeldung, wenn es nicht das erwartete format.Ich würde jede Hilfe zu schätzen wissen.

Vielen Dank im Voraus.

  • 403 kommt, wenn der server verweigert den Zugriff. Dein code sieht in Ordnung für mich. Auch können Sie versuchen, Lesen Sie den Inhalt aus der Datei und es verwenden?
InformationsquelleAutor Patty | 2016-05-22
Schreibe einen Kommentar