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 回答