Вызов веб-сервиса из Seam - PullRequest
3 голосов
/ 11 сентября 2008

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

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

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

Ответы [ 3 ]

1 голос
/ 12 сентября 2008

Есть примерно 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 голосов
/ 11 сентября 2008
final Response response = new Client(Protocol.HTTP).get(uri);

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

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

0 голосов
/ 11 сентября 2008
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. Очевидно, что детали веб-службы, которую вы используете, будут определять, как будет выглядеть ваш клиент.

...