0

是否可以使用 HTTP 客户端调用 Web 服务?

如果是的话,给我一些例子。如何获取该 Web 服务中存在的方法列表?

例如 :

我正在使用这个Web 服务 WSDL 链接

它有两个函数 FahrenheitToCelsius 和 CelsiusToFahrenheit

注意:我知道如何使用 Web 客户端调用 webservice,但我需要使用 HTTP 客户端执行调用 webService

4

2 回答 2

2

是的你可以。例如使用 Apache HttpClient 4.2.1。

import java.io.File;
import java.io.IOException;

import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.fluent.Content;
import org.apache.http.client.fluent.Request;
import org.apache.http.entity.ContentType;

public class HttpClientPost {
    public static void main(String[] args) throws ClientProtocolException, IOException {
        String request = "<soapenv:Envelope response xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" " +
            "xmlns:tem=\"http://tempuri.org/\"><soapenv:Header/><soapenv:Body>" +
            "<tem:CelsiusToFahrenheit><tem:Celsius>100</tem:Celsius>" +
            "</tem:CelsiusToFahrenheit></soapenv:Body></soapenv:Envelope>";
        Content response = Request.Post("http://www.w3schools.com/webservices/tempconvert.asmx")
            .bodyString(request, ContentType.TEXT_XML).execute().returnContent();
        System.out.println("response: " + response);
    }
}

对于这些方法,请查看WSDL 文件中名为operation的元素。

于 2012-09-20T14:22:02.493 回答
0

可以肯定的是,只要 Web 服务是通过 HTTP 协议公开的。但是您必须自己解析响应,并自己构建有效请求。使用像Apache Axis这样的框架要容易得多,它使所有这些都自动化。

您还应该注意,此 Web 服务正在使用 SOAP 协议,当您尝试使用它时应该考虑到这一点。

于 2012-09-20T13:16:49.437 回答