如何在 HTTP 请求中将 JSON 作为查询参数传递?
How to pass JSON as a query parameter in a HTTP request?
我正在使用 RESTEasy 堆栈来实现基于 REST 的客户端和服务器。我有一个处理 POST
请求的服务,如下所示:
@POST
@Path("/this")
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
public String testPost(@QueryParam("thing") String thing) {
...
}
当我从 Postman 或 REST 客户端调用以下 URI 时:
http://ip:port/base/this?thing={"id":"abc"}
我总是得到这样的错误
java.net.URISyntaxException: Illegal character in query at index (pointing to =)
这是什么原因?
如果您尝试解析 POST 请求,则应使用 @FormParam 而不是 @QueryParam。然后,你可以让 post 请求做这样的事情(使用 curl)
curl -i -X POST -H "Content-Type: application/json" -d thing="{\"id\":\"abc\"}" http://ip:port/base/this
我正在使用 RESTEasy 堆栈来实现基于 REST 的客户端和服务器。我有一个处理 POST
请求的服务,如下所示:
@POST
@Path("/this")
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
public String testPost(@QueryParam("thing") String thing) {
...
}
当我从 Postman 或 REST 客户端调用以下 URI 时:
http://ip:port/base/this?thing={"id":"abc"}
我总是得到这样的错误
java.net.URISyntaxException: Illegal character in query at index (pointing to =)
这是什么原因?
如果您尝试解析 POST 请求,则应使用 @FormParam 而不是 @QueryParam。然后,你可以让 post 请求做这样的事情(使用 curl)
curl -i -X POST -H "Content-Type: application/json" -d thing="{\"id\":\"abc\"}" http://ip:port/base/this