阿帕奇 HttpClient。如何使用编码正确生成多部分请求

Apache HttpClient. How to properly produce multipart requests with Encoding

类似于已经存在的问题

想要生成一个 http 请求,包含一个文件和一个 key=val 对。

目前代码如下:

HttpPost post = new HttpPost("http://localhost/mainform.cgi/auto_config.htm");

HttpEntity ent = MultipartEntityBuilder.create()
        .addTextBody("TYPE", "6",ContentType.TEXT_BINARY)
        .addBinaryBody("upname", new File("factory.cfg"),ContentType.APPLICATION_OCTET_STREAM,"factory.cfg")
        .build();

这只是作为实体应用于 HttpPost object 并传递给客户端。

发送到具有 lighthttp 服务 运行 的 linux-type 设备(黑盒)。问题是,当我发送此请求时,我没有看到设备的响应(物理的,并且 HttpEntity 总是 returns 默认 200 OK)。

通过 Wireshark,我注意到了两个不同之处,我非常感谢能在这方面得到一些帮助: 1. multipart 元素有一个额外的 header(与原始请求相比)- Content-transfer-encoding,我认为这可能是失败的原因。 2. 内容长度差异很大

所以第一个问题是 - 如何处理编码?

找到失败点。需要添加:

.addTextBody("TYPE", "6",ContentType.WILDCARD)
.setMode(HttpMultipartMode.BROWSER_COMPATIBLE).setCharset(Charset.forName("UTF-8"))