gpt4 book ai didi

Java - 使用从 WSDL 类生成的 SOAP

转载 作者:行者123 更新时间:2023-12-01 18:18:44 25 4
gpt4 key购买 nike

我有一个 WSDL 架构链接。使用 NetBeans,我从这个模式生成了类。但我不明白,如何使用它向服务器发送请求? NetBeans 生成了一个 XXXImplService extends Service 类,我应该使用它吗?怎么办?

正如我所想,我只需要创建对象(与 WSDL 方法和类匹配),设置必要的属性并以某种方式将该对象转换为请求文本,然后发送它并获取文本响应,我可以将其转换为类。这是真的吗?

最佳答案

当然,您必须使用 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注释来声明对网络服务的引用。 @WebServiceRef 使用 wsdlLocation元素来指​​定已部署服务的 WSDL 文件的 URI:

    @WebServiceRef(wsdlLocation="http://localhost:8080/helloservice/hello?wsdl")
    静态HelloService服务;

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

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

  3. 调用端口的 sayHello 方法,向服务传递一个名称。

    String response = port.sayHello(name);

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

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 );

however if you want authentication in application level not on basic HTTP this link can be useful.

关于Java - 使用从 WSDL 类生成的 SOAP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28162864/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com