Java WebService 客户端的URL能不能只连服务端的端点,不连服务端的wsdl文件?
大家好,Java 6以上的版本是自带webservice包的,但是看了一下,client端必须要访问服务端的 http://*****/?wsdl获取wsdl内容才行,有没有直接访问web service端点的方法?主要是不想让服务端的wsdl暴露出来。
顺便说一下,client端为java或.net,服务端为c++ gSoap.
1.先通过wsimport命令生成对应的java stub文件后,还是要访问服务端的wsdl内容才行。
示例如下:
public static void main(String[] args)
{
URL url = null;
try {
//url = new URL("file:/D:/gsoap_test/java_client/calc.wsdl");
url = new URL("http://localhost:8888?wsdl");
} catch (MalformedURLException ex) {
}
Calc service= new Calc(url);
CalcPortType port = service.getCalc();
double val = port.add(1, 2);
System.out.println(val);
}
可以看到,那个url里必须是wsdl的url。
Net的web service,和c++的gsoap client就不用获取wsdl,直接提供端点就可以了。
以下是.net的main文件
using sharpclient.calcService;
class RandClient
{
static void Main()
{
calc service = new calc();
service.Url = "http://localhost:8888";
add add_val = new add();
add_val.a = 1;
add_val.b = 2;
addResponse val = service.add(add_val);
Console.WriteLine(val.result);
System.Threading.Thread.Sleep(5000);
}
}
多谢。