You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在PowerShell中通过New-WebServiceProxy传递SOAP嵌套参数?

解决PowerShell中New-WebServiceProxy传递嵌套SOAP参数的问题

当SOAP接口要求参数嵌套在formRequest节点下时,AddForm方法不再接受零散的单个参数,而是需要传入一个对应嵌套结构的对象实例,具体操作步骤如下:

  1. 获取嵌套参数的类型
    首先需要确定formRequest对应的.NET类型全称(包含命名空间),可以通过以下方式查找:

    • 查看WSDL文档中formRequest元素的定义,找到对应的命名空间和类型名;
    • 或者在PowerShell中执行命令查找相关类型:
      $Forms.GetType().Assembly.GetTypes() | Where-Object { $_.Name -match "FormRequest" }
      

    找到类型后,用命令获取该类型对象:

    $formRequestType = $Forms.GetType().Assembly.GetType("你的命名空间.FormRequest")
    
  2. 创建嵌套参数实例并赋值
    用New-Object创建该类型的实例,然后给实例的属性逐一赋值(属性名对应SOAP接口中formRequest下的字段):

    $formRequest = New-Object $formRequestType
    # 替换为实际的属性名和值
    $formRequest.Id = 1234
    $formRequest.Name = "xyz"
    $formRequest.Code = "A1"
    
  3. 调用AddForm方法
    将创建好的嵌套参数实例传入AddForm方法,如果还有其他非嵌套的参数,按方法要求顺序添加即可:

    # 仅传嵌套参数的情况
    $Forms.AddForm($formRequest)
    # 若还有其他参数,比如额外的标识参数
    # $Forms.AddForm($formRequest, "额外参数值")
    

示例代码(假设类型为Acme.FormService.FormRequest)

# 获取嵌套参数类型
$formRequestType = $Forms.GetType().Assembly.GetType("Acme.FormService.FormRequest")
# 创建实例并赋值
$formRequest = New-Object $formRequestType
$formRequest.FormId = 1234
$formRequest.FormName = "xyz"
$formRequest.FormCode = "A1"
# 调用接口
$result = $Forms.AddForm($formRequest)

内容的提问来源于stack exchange,提问作者David T

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 16:50:24