从本机 Java Rest 客户端发送 Http Post [重复]

Posted

技术标签:

【中文标题】从本机 Java Rest 客户端发送 Http Post [重复]【英文标题】:Send Http Post from a native Java Rest client [duplicate] 【发布时间】:2017-06-13 21:12:28 【问题描述】:

我正在开发一个本机 Java REST 客户端,以使用以下 Post 信息及其有效负载向服务器提交 POST 请求。我正在使用 Apache 的 HttpClient 和 HttpPost。

我面临的挑战是如何定义和设置边界并在帖子正文中传递 JSON 对象。当我使用 REST 客户端工具(如 Postman 或 Advanced REST 客户端)测试以下发布请求时,它可以工作。但是我需要在我的本机 Java 代码中实现它。如何传递以下数据,特别是从 MYBOUNDARY 到 --MYBOUNDARY 的信息。我是否需要传递换行符/空白行并进行某种编码?

以下是我需要发送的 POST 请求及其负载。

POST /savedata/saveimage/imageid HTTP/1.1
Host: mywebsite.com
Authorization: Bearer T1touCsbcNNrQpMdJjqspLCwhbiQ
Accept: application/json, text/plain, */*
Content-Type: multipart/form-data; boundary=MYBOUNDARY
Cache-Control: no-cache

MYBOUNDARY
Content-Disposition: form-data; name="entity_priority"

"Name":"Jack","Date":"2017-01-25T11:06:33.834Z","notes":"records":["Text":"123456789","Type":"None","Attachments":"records":[]],"CreatedBy":"user":"2020"
--MYBOUNDARY

【问题讨论】:

【参考方案1】:

如果您要编写自己的实现,您应该首先阅读有关 multipart/* 工作原理的规范,例如RFC1341(MIME) : 7 The Multipart content type,或html 4.01 Specification - multipart/form-data。

您的问题是boundary 的值为MYBOUNDARY,实际边界为--MYBOUNDARY,终止符为--MYBOUNDARY--

【讨论】:

感谢安德烈亚斯的建议。您是否也可以帮助我知道我们是否有任何 Apache(或任何其他开源)可用的实现来解决上述问题。

以上是关于从本机 Java Rest 客户端发送 Http Post [重复]的主要内容,如果未能解决你的问题,请参考以下文章

将文本文件从.Net http客户端上传到InputStream格式的Java REST API

以 InputStream 格式将文本文件从 .Net http 客户端上传到 Java REST API

如何使用来自 postmnan 本机应用程序的 gmail rest api 发送邮件

将文件从 REST Web 服务发送到客户端的正确方法是啥?

通过 rest API 以 0 或 null 形式出现的值对本机/弹簧启动作出反应

如何从 Postman REST 客户端发送 spring csrf 令牌?