我有一个使用JSON处理POST请求的服务器。它还查找并解码URI中的查询参数。我的Java客户端当前使用HTTPPost通过ContentType application / json发送Json。
我想知道URLEncodeUtil方法格式是否能够实现这一目标。除文档提及外
适合用作应用程序/ x-www-form-urlencoded列表 HTTP PUT或HTTP POST中的参数。
所以我的问题是 1.这是否适用于ContenType设置为application / json。 2.是否有另一种方法可以实现服务器所需的内容,即:在URI中编码JSON以及查询参数。
答案 0 :(得分:1)
通过(HTML spec)发布表单数据有两种官方方法。相关值为application/x-www-form-urlencoded
,其中添加?
以及URL中编码的名称/值对。如果表单方法是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
?
标志着额外参数的开始。因此,虽然这在技术上是合法的,但它确实提出了一个问题,即为什么您需要发布的内容不能成为您的JSON的一部分。这种方法的缺点是查询参数都是HTTP日志的一部分,并且非常明显。您绝对不应该将此方法与密码或任何其他个人身份信息一起使用。根据您所在国家/地区的隐私权法律,您希望最大限度地减少不必要的记录,以使合规性更加轻松。