2012-09-07 3 views
5

면책 조항 :이 질문에 대한 답변을 철저히 조사했지만 예, 다른 질문 : https://stackoverflow.com/questions/10315728/how-to-send-parameters-as-formparam-to-webservice을 찾았습니다. 하지만 우선, 자바에 대해 묻는 중, 자바에 대해 묻는 질문입니다. 둘째, 어쨌든 대답이 없습니다. 당신은 단순히 URL에 변수 이름/값 쌍을 추가하고 내에서 서버를 공격하는 데 사용할 수 있도록 질문에 ... @GET 서비스로 @QueryParam의를 통과@FormParam을 다른 메소드의 RESTful 서비스에 전달하려면 어떻게해야합니까?

편안하고 서비스와

은 매우 간단합니다 프로그램. @FormParam으로도이를 수행 할 수 있습니까? 예를 들어

, 이제 나는 다음과 같은 RESTful 서비스가 있다고 가정 해 봅시다 :

@POST 
@Produces("application/xml") 
@Path("/processInfo") 
public String processInfo(@FormParam("userId") String userId, 
          @FormParam("deviceId") String deviceId, 
          @FormParam("comments") String comments) { 
    /* 
    * Process stuff and return 
    */ 
} 

을 ... 그리고 이제 나는이 같은 내 프로그램에 다른 곳에서 다른 방법이 있다고 가정 해 봅시다 :

public void updateValues(String comments) { 

    String userId = getUserId(); 
    String deviceId = getDeviceId(); 

    /* 
    * Send the information to the /processInfo service 
    */ 

} 

방법 두 번째 방법에서 주석 처리 된 작업을 수행 할 수 있습니까?

참고 : 이러한 메서드는 동일한 클래스 또는 패키지에 있지 않은 것으로 가정합니다. 또한 RESTful 서비스가 다른 서버에서 호스팅되고 있다고 가정합니다. 따라서 메소드에 액세스하고 값을 RESTful 방식으로 전달해야합니다.

도움 주셔서 감사합니다.

답변

6

@FormParam을 사용하면 양식 매개 변수를 변수에 바인딩 할 수 있습니다. here 샘플을 찾을 수 있습니다.

둘째로, 내부적으로 Java 메소드 코드를 양식하기 위해 저지 클라이언트를 사용해야합니다. 예제 코드는 here입니다.

다음과 같이 저지 클라이언트 양식을 사용하여 양식 매개 변수를 전달할 수 있습니다.

형태를

ClientConfig config = new DefaultClientConfig(); 
Client client = Client.create(config); 
WebResource service = client.resource(UriBuilder.fromUri("http://localhost:8080/api").build()); 

Form f = new Form();  
f.add("userId", "foo");  
f.add("deviceId", "bar");  
f.add("comments", "Device"); 

그것을 통과 평안한 메소드를 만든다.

service.path("processInfo").accept(MediaType.APPLICATION_XML).post(String.class,f); 

reference

+1

당신은 이런 형태의 매개 변수를 전달할 수 있습니다, 사용 com.sun.jersey.api.representation.Form는 다음과 같다. 서식 f = 새 양식(); f.add ("userId", "foo"); f.add ("deviceId", "bar"); f.add ("comments", "Device"); // 유창한 인터페이스 service.path ("processInfo"). accept (MediaType.APPLICATION_XML) .post (String.class, f); –

+0

그게 좋습니다! 그 내용을 답에 추가하고 마지막 줄을 좀 더 설명해 주시겠습니까? 이 중 하나 :'service.path ("processInfo"). accept (MediaType.APPLICATION_XML) .post (String.class, f)'그러면 받아 들일 것입니다. :) – asteri

+1

특히'path()'를 호출하는'service' 객체는 무엇입니까? – asteri

관련 문제