2008-09-11 4 views
3

Простой вопрос, но может ли кто-нибудь предоставить пример кода о том, как кто-то вызовет веб-службу из фреймворка JBoss Seam и обработает результаты?Вызов веб-службы из шва

Мне нужно уметь интегрироваться с поисковой платформой, предоставляемой частным вендором, который раскрывает свою функциональность в качестве веб-службы. Итак, я просто ищу некоторые рекомендации относительно того, как будет выглядеть код для вызова данного веб-сервиса.

(Любой образец веб-сервис может быть выбран в качестве примера.)

ответ

1

Там примерно через клиентские библиотеки gajillion HTTP (Restlet совсем немного больше, чем это, но у меня уже было этот фрагмент кода для чего-то еще), но все они должны поддерживать поддержку отправки запросов GET. Вот более менее функциональный фрагмент, который использует HttpClient от Apache Commons:

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 сделать запрос RESTful службы поиска Yahoo. Очевидно, что детали используемого веб-сервиса будут определять, на что похож ваш клиент.

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

Так что, если я понимаю, это правильно, выше линии, где фактический вызов веб-службы делается, с ответом преобразуется в соответствующий формат и манипулируют после этой строки.

Предполагая, что я не использовал Restlet, как бы эта строка отличалась?
(Конечно, фактический код обработки будет значительно отличаться, как хорошо, так что это данность.)

 Смежные вопросы

  • Нет связанных вопросов^_^