簡體   English   中英

Spring MVC RestFul服務+ Jersey Client 400錯誤請求

[英]Spring MVC RestFul service + Jersey Client 400 Bad Request

我在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錯誤請求錯誤。 這是呼叫此服務的客戶

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中發送此對象(我尚未使用Invocation.Builder但它確實具有將對象作為參數的某些post方法),Jersey客戶端應注意在有效負載中發送JSON字符串的序列化。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM