gpt4 book ai didi

json - POST Jsonobject 到 jax-rs 给出不支持的媒体类型

转载 作者:行者123 更新时间:2023-12-02 22:01:08 24 4
gpt4 key购买 nike

我可以将 JSON 作为字符串发布到我的服务,但当我将 POST 内容更改为 JSONObject 类型时遇到问题:

服务器端代码:

@POST
@Path("/post")
@Consumes(MediaType.APPLICATION_JSON)
public Response setJson(JSONObject p){
JSONObject obj = p;
String x = obj.toString();;
System.out.println(x);
run(x);
return Response.status(201).entity(x).build();
}

curl 命令:

curl -X POST -H "Content-Type: application/json" -d '{"follow_request_sent": false,"default_profile": false, "following": false}' http://localhost:8080/HelloWorld/webresources/helloworld/post

错误:

The server refused this request because the request entity is in a format not supported by the requested resource for the requested method (Unsupported Media Type)

P.s:这种接受 JSONObject 的模式对于 GET 效果很好,但对于 POST 会产生问题

最佳答案

我建议使用带有 JAXB 注释的自定义类:

@XmlRootElement
public class Thing {

private boolean follow_request_sent;
private boolean default_profile;
private boolean following;

// Constructors, Getters, Setters, toString()
}

然后你可以这样编写你的方法:

@POST
@Path("/post")
@Consumes(MediaType.APPLICATION_JSON)
public Response setJson(Thing t) {
System.out.println(t);
return Response.status(201).entity(t).build();
}

注意

  1. 不要使用像 /post 这样的路径。使用像 /things 这样的集合资源。 POST到此集合资源将创建一个新的事物
  2. 位置(URI)添加到响应的构建中。此 URI 应是新创建的 Thing 的 URI:/things/23

关于json - POST Jsonobject 到 jax-rs 给出不支持的媒体类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13081954/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com