2016-07-04 22 views
2

Ich versuche, Datei auf meinem Rest Service zu senden. Ich benutze apache httpcomponents 4.3. Es funktioniert, aber es über 600 MB verwenden. Immer, wenn Datei 200 KB oder es 600 MB von Ram verwenden.Post-Datei mit httpcomponents. Irgendwas stimmt nicht mit Speicher

Wenn ich addPart entfernen - Speicher ist in Ordnung.

Also, warum Datei senden so viel Speicher bekommen?

Dies ist mein Code

  HttpClientBuilder clientBuilder = HttpClientBuilder.create(); 

      CloseableHttpClient client = clientBuilder.build(); 

      HttpPost post = new HttpPost(url); 

      MultipartEntityBuilder builder = MultipartEntityBuilder.create(); 
      builder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE); 

      builder.addTextBody("jsonData", gson.toJson(dto)); 
      builder.addPart("file", new FileBody(file, ContentType.APPLICATION_OCTET_STREAM)); 

      post.setEntity(builder.build()); 
      HttpResponse response = client.execute(post); 

Antwort

1

für eine ältere Apache Httpcomponents, gibt es eine issue von HttpMultipartMode.BROWSER_COMPATIBLE berichtet nicht funktioniert. Es scheint, dass es nicht repariert wurde.

Versuchen Sie es zu ändern:

MultipartEntityBuilder builder = MultipartEntityBuilder.create(); 
builder.addTextBody("jsonData", gson.toJson(dto)); 
builder.addPart("file", new FileBody(file)); 
+0

Vielen Dank für die Antwort. Ich habe das versucht, aber es hat das Problem nicht gelöst. – Andrew