Soap WSDL ComplexType 被发布为错误的参数类型

2023-12-06

我有一个服务器 (SoapUI) 应答 WSDL 请求。

发送测试请求时,我的服务器代码正在接收list的争论,但我试图实现的是single论证, 的复杂型, eg:

{
 ingredient_id   => INT
 something       => STRING
 ...
}

我的类型如下:

  <wsdl:types>
    <xsd:schema targetNamespace="/ingredient">
      <xsd:element name="getIngredientInfo" type="tns:IngredientRequest"></xsd:element>
      <xsd:element name="getIngredientInfoResponse" type="tns:ingredient"></xsd:element>

      <xsd:complexType name="ingredient">
        <xsd:sequence>
            <xsd:element name="ingredient_id" type="xsd:int" minOccurs="1" maxOccurs="1"></xsd:element>
            <xsd:element name="ingredient_name" type="xsd:string" minOccurs="1" maxOccurs="1"></xsd:element>
            <xsd:element name="status_gm" type="xsd:boolean" minOccurs="1" maxOccurs="1"></xsd:element>
            <xsd:element name="status_vegan" type="xsd:boolean" minOccurs="1" maxOccurs="1"></xsd:element>
            <xsd:element name="status_vegetarian" type="xsd:boolean" minOccurs="1" maxOccurs="1"></xsd:element>
            <xsd:element name="author_id" type="xsd:int" block="#all" minOccurs="1" maxOccurs="1"></xsd:element>
        </xsd:sequence>
      </xsd:complexType>

      <xsd:complexType name="IngredientRequest">
        <xsd:sequence>
            <xsd:element name="ingredient_id" type="xsd:int"></xsd:element>
            <xsd:element name="something" type="xsd:string"></xsd:element>
        </xsd:sequence>
      </xsd:complexType>

    </xsd:schema>
  </wsdl:types>

有人可以帮助我理解为什么 WSDL 让 SoapUI 将参数作为简单参数列表而不是单个复杂参数发送吗?

编辑:这可能是序列标签的问题,但我找不到问题所在,只需要一些线索。 提前致谢!


当然,我这里有:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<wsdl:definitions
  name="ingredient"
  targetNamespace="/ingredient"
  xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
  xmlns:tns="/ingredient"
  xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
  xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <wsdl:types>
    <xsd:schema targetNamespace="/ingredient">
      <xsd:element name="getIngredientInfo" type="tns:IngredientRequest"></xsd:element>
      <xsd:element name="getIngredientInfoResponse" type="tns:ingredient"></xsd:element>

      <xsd:complexType name="ingredient">
        <xsd:sequence>
            <xsd:element name="ingredient_id" type="xsd:int" minOccurs="1" maxOccurs="1"></xsd:element>
            <xsd:element name="ingredient_name" type="xsd:string" minOccurs="1" maxOccurs="1"></xsd:element>

            <xsd:element name="status_gm" type="xsd:boolean" minOccurs="1" maxOccurs="1"></xsd:element>
            <xsd:element name="status_vegan" type="xsd:boolean" minOccurs="1" maxOccurs="1"></xsd:element>
            <xsd:element name="status_vegetarian" type="xsd:boolean" minOccurs="1" maxOccurs="1"></xsd:element>
            <xsd:element name="author_id" type="xsd:int" block="#all" minOccurs="1" maxOccurs="1"></xsd:element>
        </xsd:sequence>
      </xsd:complexType>


      <xsd:complexType name="IngredientRequest">
        <xsd:sequence>
            <xsd:element name="ingredient_id" type="xsd:int"></xsd:element>

            <xsd:element name="something" type="xsd:string"></xsd:element>
        </xsd:sequence>
      </xsd:complexType>
    </xsd:schema>
  </wsdl:types>
  <wsdl:message name="getIngredientInfoRequest">
    <wsdl:part element="tns:getIngredientInfo" name="parameters"/>
  </wsdl:message>
  <wsdl:message name="getIngredientInfoResponse">

    <wsdl:part element="tns:getIngredientInfoResponse"
        name="parameters" />
  </wsdl:message>
  <wsdl:portType name="ingredient">
    <wsdl:operation name="getIngredientInfo">
      <wsdl:input message="tns:getIngredientInfoRequest"/>
      <wsdl:output message="tns:getIngredientInfoResponse"/>
    </wsdl:operation>
  </wsdl:portType>
  <wsdl:binding name="ingredientSOAP" type="tns:ingredient">

    <soap:binding style="document"
        transport="http://schemas.xmlsoap.org/soap/http" />
    <wsdl:operation name="getIngredientInfo">
        <soap:operation
            soapAction="http://entropy.homelinux.org/kasak/" />
        <wsdl:input>
            <soap:body use="literal" />
        </wsdl:input>
        <wsdl:output>
            <soap:body use="literal" />
        </wsdl:output>

    </wsdl:operation>
  </wsdl:binding>
  <wsdl:service name="ingredient">
    <wsdl:port binding="tns:ingredientSOAP" name="ingredientSOAP">
      <soap:address location="http://entropy.homelinux.org/kasak/"/>
    </wsdl:port>
  </wsdl:service>
</wsdl:definitions>

仍然没有任何提示:(


您需要以“文档/文字包装”风格编写 WSDL。这些 WSDL 样式有点令人困惑,但是here是一个很好的比较。

本质上你需要包装你的complexType进入一个element:

<element name="IngredientInfo">
  <complexType>
    <sequence>
            <element name="ingredient_id" type="xsd:int"></xsd:element>
            <element name="something" type="xsd:string"></xsd:element>
    </sequence>
  </complexType>
</element>

并指定这个element作为消息发送

<message name="getIngredientInfoRequest">
    <part name="parameters" element="IngredientInfo"/>
</message>

因此,生成的 SOAP 消息包含以下内容:IngredientInfo-element作为 SOAP 主体的唯一子级:

<soap:envelope>
    <soap:body>
        <IngredientInfo>
            <ingredient_id>42</ingredient_id>
            <something>"What is..."</something>
        </IngredientInfo>
    </soap:body>
</soap:envelope>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Soap WSDL ComplexType 被发布为错误的参数类型 的相关文章

随机推荐

  • 如何在不选择新实例的情况下将一个查询的结果连接到另一个查询的结果中? [复制]

    这个问题在这里已经有答案了 我有一个类 它的数据来自两个不同的来源 一个是数据库 另一个是 Web API 数据库源为我提供了大部分数据 而 Web API 仅提供了一些属性 我使用 Dapper 从数据库获取数据 作为IEnumerabl
  • Rails 中不兼容的字符编码 - 如何明智地失败/跳过?

    我通过 IMAP 导入电子邮件主题时遇到问题 我遇到了一个问题 我认为与电子邮件主题中的 符号有关 花了几个小时浏览各种答案后 我似乎找不到任何有用的东西 如果我尝试以下操作 使用红宝石2 1 2 浏览量 电子邮件 索引 email sub
  • Excel VBA - 在某些条件下删除行

    如果一行有值INACTIVE in column D and N A in column H 我想删除该行 我试图用下面的代码来实现这一点 但实际上没有行被删除 Dim ws3 As Worksheet Dim r As Integer S
  • Bootstrap Datepicker - 如何将值发送到 URL?

    我必须承认我对 Javascript 毫无希望 PHP 更适合我 我正在尝试使用 Bootstrap Datepicker 进行预订系统 我正在尝试找到一种方法 当您单击日期时 它将重新加载页面并将日期发送到 URL 就像是 http ex
  • 无法读取反应中未定义的属性“someProperty”

    我正在开发一个应用程序 在该应用程序中 我使用状态从一个组件传递到另一个组件的 Navlink 中的变量值 然后将这些接收到的值加载到输入字段中 然后单击该另一个组件中的提交按钮以对值执行某些操作 当我提醒他们时 我的值会被正确接收并正确显
  • 添加到构造函数中的只读集合?

    是否有 C 语言构造允许我将项目添加到构造函数中的只读集合属性 我想做这样的事情 public class Node public IList
  • 设计从 gem 渲染默认视图而不是生成的视图?

    我在安装设备时为两个用户模型生成了视图 控制器 无论出于何种原因 正在渲染 gem 本身内部包含的视图 而不是我添加的视图 views users registrations new html erb views bizusers regi
  • jQuery 隐藏/显示并在悬停时滑动...更好的方法吗?

    基本上在使用悬停来隐藏或显示项目时遇到一些问题 想法很简单 悬停时显示一个 div 当不再悬停时 将其隐藏 问题是 如果鼠标悬停在 div 上并离开得太快 则显示 隐藏 div 将保持可见 我希望这是很容易解决的问题 而不是悬停事件的典型问
  • CUDA 9 shfl 与 shfl_sync

    自 CUDA 9 起 shfl 指令已弃用 应由 shfl sync 替换 但是 当它们表现不同时 我应该如何替换它们呢 代码示例 global static void shflTest int tid threadIdx x float
  • Chrome 和媒体查询错误

    我正在尝试制作一个基本上由一些垂直放置的幻灯片组成的网站 我一直希望做出响应式设计 以便我的 幻灯片 在更大的屏幕尺寸上适当调整大小 或者以奇怪的尺寸适当填充 这是我设置适当尺寸的 LESS 文件 html body width 100 h
  • 使用 Graph API 更新 M365 Group 的敏感度标签,PowerShell 抛出 401 错误

    UGH 当我尝试使用 Graph API 和 PowerShell 更新 M365 组敏感度标签信息时 我遇到了 401 错误 使用 Graph Explorer 野兽工作得很好 但使用 PowerShell 我收到一个错误Invoke R
  • 使用 Gluon 在 APK META-INF/INDEX.LIST 中复制的重复文件

    我正在 javafx 上的 netbeans 中使用最新的 gluon 版本开发代码 当我在笔记本电脑中运行它时 程序没有问题 但是当我尝试在 android 中运行时 我实现了这个消息 com android builder packag
  • 如何获取xml文件中每个节点的完整路径?

    我正在使用 xpath 遍历 xml 文件 我想知道是否有一种简单的方法来获取文件中每个节点的路径 我能想到的一种方法是收集数组中的所有节点 然后将其传递到一个函数 该函数将每个节点作为参数 并不断寻找父节点 直到到达文档根 所以 func
  • 如何使用状态访问器获取 Bot Framework 中的属性

    我的机器人的功能之一是处理购物车 用户可以在对话中的任何位置添加商品 然后完成购物以关闭产品购物车 为了避免将购物车从一个对话框传递到另一个对话框 我想创建一个UserProfile财产在UserState The UserProfile财
  • 如何将 Express 中的数据呈现为 HTML 表格?

    我有一个简单的server js应用 一种路由是 api showaccounts 路由 其范围是从 MongoDB 获取一系列帐户 包含用户名 余额和名称字段 app post api showaccounts async req res
  • 这个内核函数可以更具可读性吗? (学术研究所需的想法!)

    按照我之前的问题关于极长函数背后的基本原理 我想提出一个关于一段代码我正在为我的研究而学习 它是 Linux 内核中的一个函数 相当长 412 行 且复杂 一个中冶指数共 133 条 基本上 这是一个长而嵌套的 switch 语句 坦白说
  • 快速异步加载tableView图像

    我的代码从网络下载图像并将它们设置为 tableView 单元格 imageView 它工作正常 只是我需要点击一个单元格来刷新单元格的内容并加载图像 我希望图像在加载后立即出现 我尝试在 cellToUpdate 下添加 reloadDa
  • Windows 文件的服务器端病毒扫描

    我需要通过我的 ASP NET Web 应用程序扫描 Windows 服务器上上传的文件 但是 我不知道防病毒软件包是否附带 api 之类的东西 我可以使用它以编程方式触发扫描 如果可能的话 我真的希望避免任何类型的窗口调度来触发防病毒软件
  • 同时访问0x14572f2a0,但修改需要独占访问

    我正在遵循 Swift 5 中的设计模式 一书中的示例代码 该示例适用于状态模式部分 我收到内存访问错误 同时访问 0x14572f2a0 但修改需要独占访问 当我尝试运行代码时 我不知道发生了什么事 提前致谢 Code import Fo
  • Soap WSDL ComplexType 被发布为错误的参数类型

    我有一个服务器 SoapUI 应答 WSDL 请求 发送测试请求时 我的服务器代码正在接收list的争论 但我试图实现的是single论证 的复杂型 eg ingredient id gt INT something gt STRING 我