【问题标题】:Post file using httpclient fluent API使用 httpclient fluent API 发布文件
【发布时间】:2015-09-10 20:13:29
【问题描述】:

我总是使用 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();

阅读httpclient文档后发现:

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

问题是如何使用fluent API来实现这个功能。

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

【问题讨论】:

    标签: apache-httpclient-4.x


    【解决方案1】:
    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();
    

    【讨论】:

      猜你喜欢
      • 2018-08-10
      • 1970-01-01
      • 1970-01-01
      • 2011-09-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-13
      相关资源
      最近更新 更多