Nice programing

Jersey 클라이언트를 사용하여 POST 작업 수행

nicepro 2021. 1. 9. 11:40
반응형

Jersey 클라이언트를 사용하여 POST 작업 수행


Java 메서드에서 Jersey 클라이언트 개체를 사용하여 RESTful 웹 서비스 (또한 Jersey를 사용하여 작성 됨)에서 POST 작업을 수행하고 싶지만 클라이언트를 사용하여 FormParam의 값으로 사용할 값을 보내는 방법을 잘 모르겠습니다. 서버에서. 쿼리 매개 변수를 잘 보낼 수 있습니다.


아직이 작업을 수행하지는 않았지만 Google-Fu 를 간략히 살펴보면 blogs.oracle.com 에서 사용자가 요청한 내용에 대한 예제와 함께 기술 팁을 확인할 수 있습니다.

블로그 게시물에서 가져온 예 :

MultivaluedMap formData = new MultivaluedMapImpl();
formData.add("name1", "val1");
formData.add("name2", "val2");
ClientResponse response = webResource
    .type(MediaType.APPLICATION_FORM_URLENCODED_TYPE)
    .post(ClientResponse.class, formData);

도움이 되나요?


Jersey 2.x부터 MultivaluedMapImpl클래스는 MultivaluedHashMap. 이를 사용하여 양식 데이터를 추가하고 서버로 보낼 수 있습니다.

    WebTarget webTarget = client.target("http://www.example.com/some/resource");
    MultivaluedMap<String, String> formData = new MultivaluedHashMap<String, String>();
    formData.add("key1", "value1");
    formData.add("key2", "value2");
    Response response = webTarget.request().post(Entity.form(formData));

양식 엔터티는 "application/x-www-form-urlencoded".


이제 Jersey Client 문서 의 첫 번째 예입니다.

예 5.1. 양식 매개 변수가있는 POST 요청

Client client = ClientBuilder.newClient();
WebTarget target = client.target("http://localhost:9998").path("resource");

Form form = new Form();
form.param("x", "foo");
form.param("y", "bar");

MyJAXBBean bean =
target.request(MediaType.APPLICATION_JSON_TYPE)
    .post(Entity.entity(form,MediaType.APPLICATION_FORM_URLENCODED_TYPE),
        MyJAXBBean.class);

파일 업로드가 필요한 경우 MediaType.MULTIPART_FORM_DATA_TYPE을 사용해야합니다. MultivaluedMap을 사용할 수없는 것처럼 보이므로 여기에 FormDataMultiPart를 사용한 솔루션이 있습니다.

InputStream stream = getClass().getClassLoader().getResourceAsStream(fileNameToUpload);

FormDataMultiPart part = new FormDataMultiPart();
part.field("String_key", "String_value");
part.field("fileToUpload", stream, MediaType.TEXT_PLAIN_TYPE);
String response = WebResource.type(MediaType.MULTIPART_FORM_DATA_TYPE).post(String.class, part);

가장 간단 :

Form form = new Form();
form.add("id", "1");    
form.add("name", "supercobra");
ClientResponse response = webResource
  .type(MediaType.APPLICATION_FORM_URLENCODED_TYPE)
  .post(ClientResponse.class, form);

또한 이것을 시도 할 수 있습니다.

MultivaluedMap formData = new MultivaluedMapImpl();
formData.add("name1", "val1");
formData.add("name2", "val2");
webResource.path("yourJerseysPathPost").queryParams(formData).post();

참조 URL : https://stackoverflow.com/questions/2136119/using-the-jersey-client-to-do-a-post-operation

반응형