2010-01-25 4 views
47

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

감사합니다.

답변

70

나 자신도 아니지만 Google-Fu의 빠른 비트는 사용자가 요청한 것과 정확히 일치하는 예를 사용하여 tech tip on 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); 

?

+2

링크 형태로 매개 변수를 POST 요청 – orique

2

또한 당신이 시도 할 수 있습니다 :

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

를 사용하면 파일 업로드를 할 필요가 있다면, 당신은 MediaType.MULTIPART_FORM_DATA_TYPE를 사용해야합니다. MultivaluedMap을 사용할 수 없으므로 FormDataMultiPart의 솔루션을 참조하십시오. 저지 2.X에서 시작

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); 
33

MultivaluedMapImpl 클래스는 MultivaluedHashMap로 대체됩니다. 당신은 서버에 양식 데이터를 추가하고 전송하는 데 사용할 수 있습니다 : 양식 개체가 "application/x-www-form-urlencoded"의 형식으로 전송되는 것을

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)); 

참고.

2

간단한 :

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); 
12

그것은 이제 Jersey Client documentation

실시 예 5.1의 첫번째 예이다.

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); 
+0

합니까 저지 클라이언트 자동으로'MyJAXBBean.class'에 반환 형식을 변환 지금 작동한다? 이것을 달성하는 방법? – DerekY

+0

호출 체인의 마지막 매개 변수는 Jersey에 응답 내용을 MyJAXBBean 객체에 매핑하도록 지시하는 클래스입니다. 그것을 문자열에 매핑하고 자신의 chosing 도구로 역 직렬화 할 수도 있습니다. – otonglet

관련 문제