gpt4 book ai didi

java - Spring MVC RestFul服务+Jersey客户端400错误请求

转载 作者:行者123 更新时间:2023-12-01 10:31:47 25 4
gpt4 key购买 nike

我在 Spring 中创建了一个 RESTful Web 服务,并尝试通过 Jersey 客户端调用它。这是我的 Controller 方法

@RequestMapping(value = "/create",
method = RequestMethod.POST,consumes={MediaType.APPLICATION_JSON_VALUE},
produces={MediaType.APPLICATION_JSON_VALUE})
public ResponseEntity<User> createUser(@RequestBody User user ){
User u = null;
HttpStatus statusCode;
try{
userService.create(user);
u = userService.getUserById(user.getId());
statusCode = HttpStatus.CREATED;
}catch(Exception e){
logger.error("Could not create user ", e);
u = null;
statusCode = HttpStatus.CONFLICT;
}

return new ResponseEntity<User>(u, statusCode);
}

当我从 Jersey 客户端调用此 Web 服务时,收到 400 Bad Request 错误。这是调用此服务的客户端

HttpAuthenticationFeature feature = HttpAuthenticationFeature.basic("xxxx", "yyyy");

final Client client = ClientBuilder.newClient();
client.register(feature);

WebTarget webTarget = client.target("http://localhost:8080/MyWeb/api").path("user/create");

Form form = new Form();
form.param("id", "jersey");
form.param("firstName", "Jersey");
form.param("lastName", "Client");


/*User user = webTarget.request(MediaType.APPLICATION_JSON_TYPE).post(Entity.entity(form, MediaType.APPLICATION_FORM_URLENCODED_TYPE), User.class);*/
Invocation.Builder invocationBuilder = webTarget.request(MediaType.APPLICATION_JSON_TYPE);
Response response = invocationBuilder.post(Entity.entity(form, MediaType.APPLICATION_JSON_TYPE));

System.out.println(response.getStatus());
System.out.println(response.getStatusInfo());

我尝试在服务和客户端中使用 MediaType 值,但没有任何效果。

我必须告诉您,我对此完全陌生,这就像我第一次使用 RESTful Web 服务。

请帮助我理解我犯了什么错误..

最佳答案

我认为您是在告诉服务您在有效负载中发送 JSON,但当您这样做时,您是在发送表单参数:

form.param("id", "jersey");

以及以下几行,您正在模拟 POST,就像创建带有提交按钮的 HTML 表单一样。

您可能必须在客户端中声明一个 User 类,实例化该类的一个对象并将属性填充为:

User user = new User();
user.setId("jersey");

然后在 POST 中发送这个对象(我没有使用 Inspiration.Builder 但它肯定有一些以对象作为参数的 post 方法),Jersey 客户端应该负责序列化在有效负载中发送 JSON 字符串。

关于java - Spring MVC RestFul服务+Jersey客户端400错误请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35048683/

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