gpt4 book ai didi

json - 如何将 JSON 对象发布到 JAX-RS 服务

转载 作者:IT老高 更新时间:2023-10-28 12:43:59 25 4
gpt4 key购买 nike

我正在使用 JAX-RS 的 Jersey 实现。我想向此服务发布一个 JSON 对象,但我收到错误代码 415 Unsupported Media Type。我错过了什么?

这是我的代码:

@Path("/orders")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public class OrderResource {

private static Map<Integer, Order> orders = new HashMap<Integer, Order>();

@POST
public void createOrder(Order order) {

orders.put(order.id, order);
}

@GET
@Path("/{id}")
public Order getOrder(@PathParam("id") int id) {
Order order = orders.get(id);
if (order == null) {
order = new Order(0, "Buy", "Unknown", 0);
}
return order;
}
}

这是 Order 对象:

public class Order {
public int id;
public String side;
public String symbol;
public int quantity;
...
}

这样的 GET 请求完美运行,并返回 JSON 格式的订单:

GET http://localhost:8080/jaxrs-oms/rest/orders/123 HTTP/1.1

但是像这样的 POST 请求会返回 415:

POST http://localhost:8080/jaxrs-oms/rest/orders HTTP/1.1

{
"id": "123",
"symbol": "AAPL",
"side": "Buy",
"quantity": "1000"
}

最佳答案

答案出奇地简单。我必须在 POST 请求中添加一个 Content-Type header ,其值为 application/json。如果没有此 header ,Jersey 不知道如何处理请求正文(尽管有 @Consumes(MediaType.APPLICATION_JSON) 注释)!

关于json - 如何将 JSON 对象发布到 JAX-RS 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7693669/

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