반응형
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
반응형
'Nice programing' 카테고리의 다른 글
동기화 된 블록이 동기화 된 방법보다 나은 이유는 무엇입니까? (0) | 2021.01.09 |
---|---|
jQuery를 사용하여 선택 목록에서 선택한 속성 설정 (0) | 2021.01.09 |
일반 텍스트 영역 (0) | 2021.01.09 |
오른쪽에 아래쪽 삼각형이있는 스피너 주위의 테두리와 같은 사용자 지정 스피너를 만드는 방법은 무엇입니까? (0) | 2021.01.09 |
git push heroku master가 "모든 최신 정보"라고 말하지만 앱이 최신 상태가 아닙니다. (0) | 2021.01.09 |