是否可以使用HTTP Client调用Web服务?
如果是,请给我一些例子。如何获得该Web服务中存在的方法列表?
例如:
我正在使用此Web Service WSDL link
它有两个函数FahrenheitToCelsius和CelsiusToFahrenheit
注意: 我知道如何使用Web客户端调用webservice但我需要使用HTTP客户端
执行调用webService答案 0 :(得分: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 的元素。
答案 1 :(得分:0)
可以肯定的是,只要HTTP协议公开了Web服务。但是你必须自己解析响应,并自己构建有效的请求。更容易使用像Apache Axis这样的框架,它具有所有这些自动化功能。
您还应该注意,此Web服务正在使用SOAP协议,当您尝试使用它时应该考虑该协议。