3

簡単な質問ですが、誰かが JBoss Seam フレームワーク内から Web サービスを呼び出して結果を処理する方法に関するサンプル コードを提供できますか?

機能を Web サービスとして公開しているプラ​​イベート ベンダーが提供する検索プラットフォームと統合できる必要があります。そのため、特定の Web サービスを呼び出すためのコードがどのようになるかについて、いくつかのガイダンスを探しています。

(任意のサンプル Web サービスを例として選択できます。)

4

3 に答える 3

1

およそ膨大な数の HTTP クライアント ライブラリがあります (Restlet はそれよりもかなり多いですが、別のコード スニペットを既に持っています) が、それらはすべて 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);
于 2008-09-12T10:04:05.517 に答える
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を使用して、Yahoo の RESTful 検索サービスにリクエストを送信します。明らかに、使用している Web サービスの詳細によって、クライアントがどのように見えるかが決まります。

于 2008-09-11T16:58:35.653 に答える
0
final Response response = new Client(Protocol.HTTP).get(uri);

したがって、これを正しく理解していれば、上記の行は Web サービスへの実際の呼び出しが行われている場所であり、応答は適切な形式に変換され、この行の後で操作されます。

Restlet を使用していないと仮定すると、この行はどのように異なるでしょうか?
(もちろん、実際の処理コードも大幅に異なるため、当然のことです。)

于 2008-09-11T17:40:42.027 に答える