Java - 使用从WSDL类生成的SOAP

时间:2015-01-27 03:43:06

标签: java web-services soap netbeans wsdl

我有一个WSDL架构链接。使用NetBeans,我从此模式生成了类。但是我无法理解,如何使用它向服务器发送请求? NetBeans生成了XXXImplService extends Service类,我应该使用它吗?怎么样?

我认为,我只需创建对象(匹配WSDL方法和类),设置必要的属性并以某种方式将此对象转换为请求文本,然后发送并获取文本响应,我可以变成班级。这是真的吗?

3 个答案:

答案 0 :(得分:2)

当然您必须使用WSDL,按照以下步骤获取Java Web服务(JAX-WS)的完整客户端应用程序:

假设您有这样的Web服务:

@WebService
public class Hello {
    private String message = new String("Hello, ");

    public void Hello() {}

    @WebMethod
    public String sayHello(String name) {
        return message + name + ".";
    }
}
  1. 使用javax.xml.ws.WebServiceRef 注释来声明 对Web服务的引用。 @WebServiceRef使用wsdlLocation element用于指定已部署服务的WSDL文件的URI:

    @WebServiceRef(wsdlLocation="http://localhost:8080/helloservice/hello?wsdl") static HelloService service;

  2. 通过调用检索服务的代理,也称为端口 getHelloPort服务。

    Hello port = service.getHelloPort(); 该端口实现服务定义的SEI。

  3. 调用端口的sayHello方法,将服务名称传递给服务。

    String response = port.sayHello(name);
    
  4. 编辑(在评论中请求)如果网络服务请求基本身份验证并想要传递用户名和密码,您可以像这样传递它们(还有其他方式也):

    import java.net.Authenticator;
    import java.net.PasswordAuthentication;
    
    Authenticator authenticator = new Authenticator() 
    {
        @Override
        protected PasswordAuthentication getPasswordAuthentication()
        {
            return new PasswordAuthentication("usr", "pass".toCharArray());
        }
    };
    
    Authenticator.setDefault(authenticator );
    
      

    但是,如果您希望应用程序级别的身份验证不是基本的   HTTP this link可能很有用。

答案 1 :(得分:1)

您必须立即在此生成的服务impl和Web方法中实现您的代码。因此,当您通过Web服务客户端(SOAP UI等)调用服务端点和特定方法时,这些生成的类将接受调用并通过服务impl路由到您的实现。

答案 2 :(得分:1)

本教程将帮助您逐步完成。由于您已经创建了存根类,因此请跳过第一部分。专注于“Web服务调用”部分。

http://www.ibm.com/developerworks/webservices/library/ws-apacheaxis/index.html?ca=dat