2008-09-11 4 views
3

간단한 질문이지만 누군가 JBoss Seam 프레임 워크 내에서 웹 서비스를 호출하고 결과를 처리하는 방법에 대한 샘플 코드를 제공 할 수 있습니까?Seam으로부터 웹 서비스 호출하기

웹 서비스로 자신의 기능을 노출하는 비공개 공급 업체가 제공하는 검색 플랫폼과 통합 할 수 있어야합니다. 그래서, 나는 주어진 웹 서비스를 호출하기위한 코드가 어떻게 보이는지에 대한 지침을 찾고있다.

는 (모든 샘플 웹 서비스는 예로서 선택할 수 있습니다.)

답변

1

있다으로 Restlet은보다 아주 조금 더 (대략 gajillion의 HTTP 클라이언트 라이브러리,하지만 난 이미 있었다 그 코드 스 니펫 (snippet)을 다른 것으로 만들었지 만) 모두 GET 요청을 보내도록 지원해야합니다. 다음은 Apache Commons의 HttpClient을 사용하는 다소 기능이 적은 스 니펫입니다.

HttpClient client = new HttpClient(); 
HttpMethod method = new GetMethod("http://api.search.yahoo.com/WebSearchService/V1/webSearch?appid=restbook&query=HttpClient"); 
client.executeMethod(method); 
0
import org.restlet.Client; 
import org.restlet.data.Protocol; 
import org.restlet.data.Reference; 
import org.restlet.data.Response; 
import org.restlet.resource.DomRepresentation; 
import org.w3c.dom.Node; 

/** 
* Uses YAHOO!'s RESTful web service with XML. 
*/ 
public class YahooSearch { 
    private static final String BASE_URI = "http://api.search.yahoo.com/WebSearchService/V1/webSearch"; 

    public static void main(final String[] args) { 
     if (1 != args.length) { 
      System.err.println("You need to pass a search term!"); 
     } else { 
      final String term = Reference.encode(args[0]); 
      final String uri = BASE_URI + "?appid=restbook&query=" + term; 
      final Response response = new Client(Protocol.HTTP).get(uri); 
      final DomRepresentation document = response.getEntityAsDom(); 

      document.setNamespaceAware(true); 
      document.putNamespace("y", "urn:yahoo:srch"); 

      final String expr = "/y:ResultSet/y:Result/y:Title/text()"; 
      for (final Node node : document.getNodes(expr)) { 
       System.out.println(node.getTextContent()); 
      } 
     } 
    } 
} 

이 코드는 야후의 편안하고 검색 서비스에 요청을 할 Restlet를 사용합니다. 분명히, 당신이 사용하고있는 웹 서비스의 세부 사항은 당신의 클라이언트가 어떻게 생겼는지 지시 할 것입니다. 내가 올바르게 이해하면 웹 서비스에 대한 실제 호출 응답이 줄 끝에서 적절한 형식으로 변환되고 조작되고 함께 만든되는 위치

0
final Response response = new Client(Protocol.HTTP).get(uri); 

그래서, 위의 라인입니다.

내가 Restlet을 사용하지 않는다고 가정 할 때,이 행은 어떻게 다릅니 까?
(즉 주어진 그래서 물론, 실제 처리 코드뿐만 아니라 상당히 다를 수있다.)