使用httpclient fluent API发布文件

Fel*_*lix 2 apache-httpclient-4.x

由于代码非常干净,因此我始终使用httpclient fluent api来发布消息。例如:

String html = Request.Post("URL")
             .connectTimeout(2000).socketTimeout(2000)
             .bodyForm(Form.form().add("type", "image").build(), Charset.forName("UTF8"))
             .execute().returnContent().asString();
Run Code Online (Sandbox Code Playgroud)

阅读httpclient文档后,我发现了这一点:

MultipartEntityBuilder builder = MultipartEntityBuilder.create();
builder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);
builder.setCharset(Charset.forName(CHARSET));
builder.addBinaryBody("media", bytes, ContentType.MULTIPART_FORM_DATA, fileName);
Run Code Online (Sandbox Code Playgroud)

问题是如何使用流畅的API实现此功能。

我找到了,.bodyFile(new File(""), ContentType.MULTIPART_FORM_DATA)但我不知道如何设置文件的表单参数名称。

ok2*_*k2c 5

HttpEntity entity = MultipartEntityBuilder.create()
        .setMode(HttpMultipartMode.BROWSER_COMPATIBLE)
        .setCharset(Charset.forName(CHARSET))
        .addBinaryBody("media", bytes, ContentType.MULTIPART_FORM_DATA, fileName)
        .build();
String html = Request.Post("URL")
        .connectTimeout(2000)
        .socketTimeout(2000)
        .body(entity)
        .execute().returnContent().asString();
Run Code Online (Sandbox Code Playgroud)