发送在 Post 上的 URI 中编码的查询参数,它也有 json

Sending Query Parameters encoded in a URI on a Post which also has json

我有一个服务器可以使用 JSON 处理 POST 请求。它还从 URI 中查找和解码查询参数。我的 Java 客户端当前使用 HTTPPost 通过 ContentType application/json.

通过 Json 发送

我不知道 URLEncodeUtil 方法格式是否能够实现这一点。除了文档提到

suitable for use as an application/x-www-form-urlencoded list of parameters in an HTTP PUT or HTTP POST.

所以我的问题是 1. ContenType 设置为 application/json 是否有效? 2. 是否有另一种方法来完成服务器的要求,即:具有 JSON 以及在 URI 中编码的查询参数。

有两种通过 (HTML spec) 获取表单数据的官方方法 post。相关值是 application/x-www-form-urlencoded,它添加了 ? 以及 URL 中编码的 name/value 对。如果表单方法是 POST 那么它将是 HTTP POST 语句之后的第一行。

我们在 REST Web 服务中使用 HTTP 所做的一切都是有效的 HTTP,但不适用于 HTML。所以 application/json 可以有 application/x-www-form-urlencoded 样式参数和 JSON 有效负载的组合。

HTTP 请求看起来像这样:

POST /blog/posts?myparam=Something%20Good&token=donotdothis
Accept: application/json
Content-Type: application/json
Content-Length: 57

{"title":"Hello World!","body":"This is my first post!"}

也在这里拼写:http://www.jsonrpc.org/historical/json-rpc-over-http.html

它是?,标志着额外参数的开始。因此,虽然这在技术上是合法的,但它确实回避了一个问题,为什么你 post 需要的一切不能成为你 JSON 的一部分。这种方法的缺点是查询参数都是 HTTP 日志的一部分,并且非常明显。您绝对不应该将此方法用于密码或任何其他个人身份信息。根据您所在国家/地区的隐私法,您希望尽量减少不必要的记录,以便更容易遵守法规。