当前位置: 首页 > 知识库问答 >
问题:

Apache HttpClient.如何使用编码正确生成多部分请求

梁烨
2023-03-14

类似于已经存在的问题ApacheHttpClient生成多部分表单post

想要产生一个超文本传输协议请求,持有一个文件和一个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对象并传递给客户端

它被发送到运行轻量级ttp服务的linux类型设备(黑盒)。问题是,当我发送此请求时,我看不到来自设备的响应(物理的,并且HttpEntity总是返回默认的200 OK)。

通过Wireshark,我注意到了两个不同之处,如果能得到一些帮助,我将不胜感激:1。多部分元素有一个额外的头(与原始请求相比)-内容传输编码,我认为这可能是失败的原因。2.内容长度差别很大。

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

共有1个答案

梁俊友
2023-03-14

找到了它失败的地方。需要增加以下内容:

.addTextBody("TYPE", "6",ContentType.WILDCARD)
.setMode(HttpMultipartMode.BROWSER_COMPATIBLE).setCharset(Charset.forName("UTF-8"))
 类似资料:
  • 我正在尝试使用JSoup获取此URL http://betatruebaonline.com/img/parte/330/ciguen%c3%91al.jpg 相反,正确的 http://betatruebaonline.com/img/parte/330/ciguen%cc%83al.jpg 我该怎么解决这个?多谢了。

  • 我试图使用spring Webflux Webclient发送一个国际格式化的电话号码,并通过另一个也使用Webflux的应用程序读取这个电话号码。 我的代码如下所示: 不幸的是,在这个呼叫和接收者之间的某个地方,加号被空格代替了。endpoint接收到:“33612345678”作为字符串。 请求的netty调试日志显示如下: Netty的日志显示: 电话号码似乎被编码了两次。 +->%2b->

  • 我是vapor的初学者,我选择vapor 3-rc作为开始,因为它似乎打破了vapor 2的变化。不幸的是,目前还没有完整的文档。 我目前正在尝试将一个简单的txt文件从Postman上传到我的Vapor 3本地服务器。 这是我的路线 和我的控制器 首先,通过执行邮递员请求,服务器返回: 通过研究源代码和关于此的有限文档,我似乎应该声明一个解码器来支持多部分传入请求。 所以我做到了: 我使用For

  • 问题内容: 我的代码示例: 结果是: 我究竟做错了什么? 问题答案: 您尚未为结果指定比例。请尝试这个 2019编辑:已更新JDK 13的答案。因为希望您现在已从JDK 1.5迁移。 请阅读JDK 13 文档。 JDK 1.5的旧答案 : 结果将为0.33。请阅读API

  • 我的代码示例: 结果是:<代码>1/3=0 我做错了什么?

  • 假设我有一个应用程序,其中REST API更新产品的价格。 我想使用微米计来公开新价格作为指标。我无法理解微米计留档应该如何完成。 唯一对我有效的DoubleFunction是在我的ProductService中创建一个新方法来返回它的价格。这似乎是我想公开作为指标的每一条数据的开销。 我这里缺少什么?为什么不足以更新Gauge?