如何使用Jersey POST请求发送标头和正文?

时间:2019-12-17 16:51:19

标签: java rest post jersey content-type

我无法成功命中API。我需要在POST请求的正文和标头中传递三个值:"Content-Type":"application/x-www-form-urlencoded"

我的状态为400,与此同时:  Content-Type=[application/json;charset=UTF-8],有人可以在这里向我指出正确的方向吗?

    Client client = ClientBuilder.newClient(); 
    WebTarget webTarget = client.target(REST_URI).path("dummy/dummy"); // REST_URI is a constant containing the URL

    // Create body content
    String json = Json.createObjectBuilder()
            .add("grant_type", "password")
              .add("username", USERNAME) // USERNAME/PASSWORD are constants
              .add("password", PASSWORD)
            .build()
            .toString();


    Response response = webTarget.request(MediaType.APPLICATION_FORM_URLENCODED)
            //.header("Content-Type", "application/x-www-form-urlencoded")
            .accept(MediaType.APPLICATION_FORM_URLENCODED)
            .post(Entity.entity(json, MediaType.APPLICATION_JSON));

1 个答案:

答案 0 :(得分:1)

您可以尝试以下代码。您必须在提及内容类型的地方使用.type()方法。

Response response = webTarget.resource(URL)
                             .accept(MediaType.APPLICATION_JSON)
                             .type(MediaType.APPLICATION_JSON)
                             .post(Entity.entity(json, MediaType.APPLICATION_JSON));

您还可以从以下链接中了解如何建立客户关系。

https://howtodoinjava.com/jersey/jersey-restful-client-examples/#post