从本机 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 [重复]的主要内容,如果未能解决你的问题,请参考以下文章