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

PowerShell中Invoke-RestMethod传查询参数返回403错误求助

故障根因
  • 你使用的目标接口仅从URL的查询参数位置读取param1、param2、apikey三个字段,不会读取请求体中的参数。
  • 第一种写法直接将参数拼接在URL后,符合接口的参数读取规则,因此可以正常运行;第二种写法将参数传入-Body放在请求体中,接口无法读取到必要参数,因此运行失败。
推荐解决方案

如果你希望避免手动拼接URL参数,又符合接口的参数传递规则,可以使用.NET内置的查询字符串构造工具实现参数自动拼接:

# 引入System.Web程序集用于处理查询参数
Add-Type -AssemblyName System.Web

# 基础请求地址
$baseUri = "https://testendpoint.com/test"
# 构造查询参数集合
$queryParams = [System.Web.HttpUtility]::ParseQueryString([String]::Empty)
$queryParams['param1'] = 'value1'
$queryParams['param2'] = 'value2'
$queryParams['apikey'] = 'keyvalue'

# 拼接生成最终请求地址
$uriBuilder = [System.UriBuilder]$baseUri
$uriBuilder.Query = $queryParams.ToString()

# 发起请求
Invoke-RestMethod -Uri $uriBuilder.Uri -Method 'Post'

如果确认目标接口支持从表单格式的请求体中读取参数,可以在请求时指定ContentType适配表单格式,修改后的请求代码如下:

$body = @{
    param1='value1';
    param2='value2';
    apikey='keyvalue';
}
$endpoint = "https://testendpoint.com/test"
# 新增ContentType指定请求体为表单格式
Invoke-RestMethod -Uri $endpoint -Body $body -Method 'Post' -ContentType 'application/x-www-form-urlencoded'

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.21 14:45:03