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

如何在PowerShell中构造多维数组向C# RESTful接口提交POST请求

解决PowerShell构造POST请求参数的问题

嘿,我来帮你搞定这个PowerShell的参数构造问题!你的核心问题其实是PowerShell里数组和对象的创建方式和PHP不一样,咱们一步步来解决:

先纠正数组创建的错误

你之前用{'title1'; 'title2'}得到拼接字符串,是因为{}在PowerShell里是脚本块,不是数组!要创建数组,得用@()语法:

# 这才是正确的字符串数组(对应C#的List<string>)
$paramList = @('title1', 'title2')

构造自定义对象的列表(对应C#的ParamObject集合)

对于PHP里的paramObject多维数组,咱们在PowerShell里可以用[PSCustomObject]来模拟C#的实体类,然后把这些对象放进数组里:

# 构造多个ParamObject对应的对象,放进数组
$paramObject = @(
    [PSCustomObject]@{
        objectParam1 = "objectValue1"
        objectParam2 = "objectValue2"
    },
    [PSCustomObject]@{
        objectParam1 = "objectValue3"
        objectParam2 = "objectValue4"
    },
    [PSCustomObject]@{
        objectParam1 = "objectValue5"
        objectParam2 = "objectValue6"
    }
)

组装完整的请求参数并发送POST请求

最后把所有参数组装成一个对象,转换成JSON(RESTful接口几乎都优先接收JSON格式),再用Invoke-RestMethod发送请求:

# 组装完整参数对象(注意属性名要和C#实体类完全一致,比如C#里是paramobject,别写成paramObject)
$params = [PSCustomObject]@{
    param1 = 'value1'
    param2 = 'value2'
    paramList = $paramList
    paramobject = $paramObject
}

# 转换成JSON,一定要加-Depth 10,不然嵌套对象会被截断
$jsonBody = $params | ConvertTo-Json -Depth 10

# 发送POST请求
$response = Invoke-RestMethod -Uri "你的WebService接口地址" -Method Post -Body $jsonBody -ContentType "application/json"

几个关键注意点

  • 属性大小写:C#的实体类里是paramobject(小写o),你PHP里写的是paramObject,这里一定要和接口实际接收的参数名保持一致,WebAPI默认大小写不敏感,但最好别踩坑。
  • 为什么用[PSCustomObject]:它生成的对象结构和C#实体类完全匹配,转换成JSON后格式更标准,比直接用哈希表靠谱。
  • -Depth 10不能少:PowerShell默认JSON转换深度只有2,你的参数有嵌套数组和对象,不指定足够深度会导致内容被截断成{}。

如果你的接口是接收表单格式(不是JSON),那构造方式会有点不同,但RESTful接口更推荐用JSON,处理复杂结构更顺畅。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 05:19:20