java - 如何编写 WSDL?

标签 java web-services soap wsdl

我使用 Eclipse IDE 创建了一个动态 Web 项目,下面给出了公开的 Web 服务方法,即 CallPaySecure()。

我想知道如何创建一个接受 SOAP 头的 SOAP 服务,如下所示。

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Header>
    <RequestorCredentials xmlns="https://paysecure/merchant.soap.header/">
      <Version>string</Version>
      <UserCredentials>
        <UserID>string</UserID>
        <Password>string</Password>
      </UserCredentials>
    </RequestorCredentials>
  </soap:Header>
  <soap:Body>
    <CallPaySecure xmlns="https://paysecure/merchant.soap/">
      <strCommand>string</strCommand>
      <strXML>string</strXML>
    </CallPaySecure>
  </soap:Body>
</soap:Envelope>

我用java编写了以下代码

@WebMethod

@WebResult(name="CallPaySecureResult")

public String CallPaySecure(
			@WebParam(name="strCommand")String strCmd,
			@WebParam(name="strXML") String strXML ){
  }

但是这段代码只能从以下标签中获取值。

<strCommand>string</strCommand>      
<strXML>string</strXML>

1.我的 WSDL 是由 Glassfish 服务器 v4 自动生成的,我如何修改 WSDL 或者我应该使用什么 java 代码来接受上述 XML SOAP 请求?

2.如何定义<soap:Header>在 WSDL 中,以便我可以访问 <Version> 中的值, <UserID><Password>在我的网络服务 CallPaySecure() 中?

我是第一次使用 SOAP。

感谢您的建议。

最佳答案

使用 IDE 从 WSDL 生成 Java 客户端。在生成的 Java 类文件中编写您的实现逻辑。

这里的 Fox 示例是如何从 eclipse 生成 Java 客户端

1) 从文件 -> 新建 ->动态 Web 项目创建动态 Web 项目

2) 单击项目并打开上下文菜单新建 -> 其他,然后从窗口中选择Web 服务客户端

enter image description here

3) 单击浏览并选择 WSDL 地址或本地 WSDL 文件 enter image description here

4) 单击“完成”。所有必需的 java 文件将在动态 Web 项目中生成

如果你想在没有任何IDE的情况下生成Java客户端 HERE是使用 wsimport

的教程

关于java - 如何编写 WSDL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35433595/

相关文章:

java - 在 Java 中,当使用 DataOutputStream 写入文件时,如何定义正在写入的数据的 Endian?

java - 如何使用java cdi的注入(inject)点读取非绑定(bind)属性

asp.net - 如何阻止 .NET 使用 XML.Serialization 对 XML 字符串进行编码

java - 如何使用 axis2 从 SOAP web 服务获取作为字符串的 xml 响应

php - 并行发出 7 个 soap api 请求的最快或最可靠的方法

java - 循环正在跳过语句(赌场程序)

java - Hibernate @Filter 枚举集合

python - 如何将 Gevents 与 Falcon 一起使用?

java - Soap header (序言中出现意外的 EOF)

java - 网络服务 : How do I detect the endpoint that sent the message