2014-09-14 2 views
3

현재 개발할 프레임 워크를 전환 하겠지만이 멋진 프레임 워크를 처음 사용합니다. 난 그냥 원격 서버에 게시물 요청을 보내고 응답을 원합니다.재생 프레임 워크 - 재생 프레임 워크에서 자바 코드를 사용하여 게시물 요청을 보내는 방법

WebResource resource = client.resource("http://myfirstUrl"); 
resource.addFilter(new LoggingFilter()); 
Form form = new Form(); 
form.add("grant_type", "authorization_code"); 
form.add("client_id", "myclientId"); 
form.add("client_secret", "mysecret"); 
form.add("code", "mycode"); 
form.add("redirect_uri", "http://mysecondUrl");  
String msg = resource.accept(MediaType.APPLICATION_JSON).post(String.class, form); 

을하고 내가 원하는 무엇 이는 MSG를 얻을 수 있습니다 : 내가 저지를 사용하는 경우

, 그냥 같은, 아주 쉬운 것입니다.

하지만 Play 프레임 워크에서 이러한 게시물 요청을 보낼 라이브러리를 찾을 수 없습니다. 나는 이것이 아주 간단한 특징이어야하고 Play는 그것을 통합해야한다고 생각한다. 검색을 시도하고 대부분의 유스 케이스가 뷰 레브의 Form에 관한 것입니다. 아무도 나에게 도움이나 예제를 줄 수 있습니까? 미리 감사드립니다!

+0

당신은 놀이에서 zentasks 예를 확인해야합니다. 다운로드 한 게임 프레임 워크에는이 예제의 소스 코드가 포함되어 있어야합니다. 양식 처리를 포함하여 여러 기능이 포함되어 있습니다. – Tom

+0

안녕하세요, Tom, zentask 예제 소스 코드를 탐색했습니다. 불행히도 Java 코드에서 게시물 요청을 보내려하지 않았습니다. 그런 작은 특징을 이루기 위해 저지를 통합시켜야 할 것 같은데 ... – feikiss

답변

4

Play WS API를 사용하여 Play 응용 프로그램 내에서 비동기 HTTP 호출을 만들 수 있습니다. 먼저 javaWs을 종속 항목으로 추가해야합니다.

libraryDependencies ++= Seq(
    javaWs 
) 

그러면 HTTP POST 요청은 다음과 같이 간단합니다.

WS.url("http://myposttarget.com") 
.setContentType("application/x-www-form-urlencoded") 
.post("key1=value1&key2=value2"); 

post()

및 다른 HTTP 메소드는 자바를 재생하는 재생 스칼라에서 상속 뭔가있는 F.Promise<WSResponse> 개체를 반환합니다. 기본적으로 비동기 호출의 기본 메커니즘입니다. 당신은 처리하고 다음과 같이 요청의 결과를 얻을 수 있습니다

Promise<String> promise = WS.url("http://myposttarget.com") 
.setContentType("application/x-www-form-urlencoded") 
.post("key1=value1&key2=value2") 
.map(
    new Function<WSResponse, String>() { 
     public String apply(WSResponse response) { 
      String result = response.getBody(); 
      return result; 
     } 
    } 
); 

마지막으로 얻은 promise 목적은 우리의 경우에 String 객체의 래퍼입니다. 그리고 당신은, 랩 String로 얻을 수 있습니다 : 실패로이 비동기 요청이 고려 될 때까지

long timeout = 1000l;// 1 sec might be too many for most cases! 
String result = promise.get(timeout); 

timeout는 대기 시간입니다.

훨씬 더 자세한 설명과 고급 사용 사례는 설명서와 javadocs를 확인하십시오. https://www.playframework.com/documentation/2.1.1/JavaGuide1 :

https://www.playframework.com/documentation/2.3.x/JavaWS

https://www.playframework.com/documentation/2.3.x/api/java/index.html

+0

고마워! WS 관련 메소드를 사용하여 작동합니다! :) – feikiss

관련 문제