Java soap客户端到wsdl url

时间:2014-03-27 21:32:01

标签: java soap

我想用一些参数调用soap函数。我做了它python但我怎么能在java上做到这一点?

我在python上的代码:

        url = 'http://78.188.50.246:8086/iskultur?singleWsdl'
        client = Client(url)

        d = dict(UserId='a', UserPass='b', Barkod=str(value))

        result = client.service.Stok(**d)
        return int(result)

我怎么能在java上做到这一点?

全部谢谢

1 个答案:

答案 0 :(得分:1)

首先,您需要生成代理类。您可以使用wsimport(它是Java SE工具)来实现这一点:

wsimport -keep http://78.188.50.246:8086/iskultur?singleWsdl

这将生成类(在包中)并将结果放在当前目录中。我测试了您的网址,它生成了两个包层次结构(一个在' org'中开始,另一个在' com'中)。上面的命令将保留源代码,因此您可以将这些目录移动到Java项目源路径(稍后您应该在构建过程中包含此代码生成步骤)。

使用类路径中生成的类,现在可以从Service创建WSDL实例(传递URL和命名空间限定名称的服务)。我从WSDL获得了这些信息。

URL wsdlLocation = new URL("http://78.188.50.246:8086/iskultur?singleWsdl");
QName serviceName = new QName("http://tempuri.org/", "EbWCFtoLogo");

Service service = Service.create(wsdlLocation, serviceName);

然后,您将获得一个代理,您可以使用Service.getPort()调用SOAP方法来传递端口(IEbWCFtoLogo)的接口。现在您有了一个可以调用远程SOAP方法的引用。

IEbWCFtoLogo proxy = service.getPort(IEbWCFtoLogo.class);

wsimport工具生成了stok()方法,该方法接收3个参数。我调用了您使用的一些值,并在下面的代码中返回-1.0

double value = proxy.stok("a", "b", "code");
System.out.println("Result: " + value);