如何使用 PowerShell 为 POST 请求创建原始正文
How to create a raw body for POST request using PowerShell
我正在尝试使用 PowerShell 发出 POST 请求。它采用原始类型的主体。我知道如何使用 PowerShell 传递表单数据,但不确定原始数据类型。对于 Postman 中的简单原始数据,例如
{
"@type":"login",
"username":"xxx@gmail.com",
"password":"yyy"
}
我在 PowerShell 中通过了以下,它工作正常。
$rawcreds = @{
'@type' = 'login'
username=$Username
password=$Password
}
$json = $rawcreds | ConvertTo-Json
但是,对于像下面这样复杂的原始数据,我不确定如何传入 PowerShell。
{
"@type": Sample_name_01",
"agentId": "00000Y08000000000004",
"parameters": [
{
"@type": "TaskParameter",
"name": "$source$",
"type": "EXTENDED_SOURCE"
},
{
"@type": "TaskParameter",
"name": "$target$",
"type": "TARGET",
"targetConnectionId": "00000Y0B000000000020",
"targetObject": "sample_object"
}
],
"mappingId": "00000Y1700000000000A"
}
我的解释是,您的第二个代码块是您想要的原始 JSON,但您不确定如何构造它。最简单的方法是使用 here string:
$body = @"
{
"@type": Sample_name_01",
"agentId": "00000Y08000000000004",
"parameters": [
{
"@type": "TaskParameter",
"name": "$source$",
"type": "EXTENDED_SOURCE"
},
{
"@type": "TaskParameter",
"name": "$target$",
"type": "TARGET",
"targetConnectionId": "00000Y0B000000000020",
"targetObject": "sample_object"
}
],
"mappingId": "00000Y1700000000000A"
}
"@
Invoke-WebRequest -Body $body
变量替换有效(因为我们使用 @"
而不是 @'
)但您不必对文字 "
字符进行混乱转义。
所以这意味着 $source$
将被解释为一个名为 $source
的变量,该变量将嵌入到字符串中,后跟文字 $
。如果这不是您想要的(也就是说,如果您想在正文中按字面意思使用 $source$
),则使用 @'
和 '@
将此处的字符串括起来,这样 powershell 变量就不会嵌入式。
我正在尝试使用 PowerShell 发出 POST 请求。它采用原始类型的主体。我知道如何使用 PowerShell 传递表单数据,但不确定原始数据类型。对于 Postman 中的简单原始数据,例如
{
"@type":"login",
"username":"xxx@gmail.com",
"password":"yyy"
}
我在 PowerShell 中通过了以下,它工作正常。
$rawcreds = @{
'@type' = 'login'
username=$Username
password=$Password
}
$json = $rawcreds | ConvertTo-Json
但是,对于像下面这样复杂的原始数据,我不确定如何传入 PowerShell。
{
"@type": Sample_name_01",
"agentId": "00000Y08000000000004",
"parameters": [
{
"@type": "TaskParameter",
"name": "$source$",
"type": "EXTENDED_SOURCE"
},
{
"@type": "TaskParameter",
"name": "$target$",
"type": "TARGET",
"targetConnectionId": "00000Y0B000000000020",
"targetObject": "sample_object"
}
],
"mappingId": "00000Y1700000000000A"
}
我的解释是,您的第二个代码块是您想要的原始 JSON,但您不确定如何构造它。最简单的方法是使用 here string:
$body = @"
{
"@type": Sample_name_01",
"agentId": "00000Y08000000000004",
"parameters": [
{
"@type": "TaskParameter",
"name": "$source$",
"type": "EXTENDED_SOURCE"
},
{
"@type": "TaskParameter",
"name": "$target$",
"type": "TARGET",
"targetConnectionId": "00000Y0B000000000020",
"targetObject": "sample_object"
}
],
"mappingId": "00000Y1700000000000A"
}
"@
Invoke-WebRequest -Body $body
变量替换有效(因为我们使用 @"
而不是 @'
)但您不必对文字 "
字符进行混乱转义。
所以这意味着 $source$
将被解释为一个名为 $source
的变量,该变量将嵌入到字符串中,后跟文字 $
。如果这不是您想要的(也就是说,如果您想在正文中按字面意思使用 $source$
),则使用 @'
和 '@
将此处的字符串括起来,这样 powershell 变量就不会嵌入式。