2017-08-17 2 views
0

Ich benutze Java mit HttpAsyncClient, und versuche, eine Post-Anfrage an einen Server mit Multipart/Form zu machen. Es gibt zwei Parameter: Einer ist nur eine Zeichenfolge, während der zweite ein fie/Byte-Array ist. Wenn ich Anforderungen mit großen Bytearrays ausführen muss, erhalte ich die folgende Ausnahme: org.apache.http.ContentTooLongException: Inhaltslänge ist zu lang.MultipartFormEntity - Inhalt zu lang

Gibt es eine Möglichkeit, dieses Problem zu beheben? Wie könnte ich eine große Anfrage mit multipart/form unter Verwendung von Java und dieser Entität machen?

Hier einige meiner Code:

final HttpPost post = new HttpPost(uri); 
final HttpEntity entity = MultipartEntityBuilder.create() 
       .addTextBody("name", fileName).addBinaryBody("file", rawContent, ContentType.APPLICATION_OCTET_STREAM, fileName) 
       .build(); 
post.setEntity(entity); 
return client.execute(post, null); 

Wo rawContent ist nur ein Byte-Array.

Antwort

0

Beantworten Sie diese Frage 'Gibt es eine Möglichkeit, dieses Problem zu lösen? MultipartFormEntity 'Klasse: " können Sie diesen Code in Ihrer versuchen'

@Override 
    public InputStream getContent() throws IOException { 
     if (this.contentLength < 0) { 
      throw new ContentTooLongException("Content length is unknown"); 
     } else if (this.contentLength > 25 * 1024) { 
      throw new ContentTooLongException("Content length is too long: " + this.contentLength); 
     } 
     final ByteArrayOutputStream outstream = new ByteArrayOutputStream(); 
     writeTo(outstream); 
     outstream.flush(); 
     return new ByteArrayInputStream(outstream.toByteArray()); 
    } 

    @Override 
    public void writeTo(final OutputStream outstream) throws IOException { 
     this.multipart.writeTo(outstream); 
    } 

} 
+0

MultipartFormEntity nicht meine Klasse ist, seine eine Apache-Klasse mit Http-Client verwendet. Ich bin mir ziemlich sicher, dass dieser gerade gepostete Code dort bereits vorhanden ist. – baki1995