当前位置: 首页 > 知识库问答 >
问题:

如果正文参数以“@”开头,则发出PowerShell POST请求

陆翰学
2023-03-14

我想在PowerShell中发出POST请求。以下是Postman中的正文详细信息。

{
  "@type":"login",
  "username":"xxx@gmail.com",
  "password":"yyy"
}

如何在PowerShell中传递此消息?

共有3个答案

阴阳
2023-03-14

@Frode F.给出了正确的答案。

顺便说一下Invoke-WebRequest还会打印200 OK和很多bla、bla、bla...这可能很有用,但我仍然更喜欢Invoke-RestMethod它更轻。

此外,请记住,您需要仅将|ConvertTo-Json用于正文,而不是标头:

$body = @{
 "UserSessionId"="12345678"
 "OptionalEmail"="MyEmail@gmail.com"
} | ConvertTo-Json

$header = @{
 "Accept"="application/json"
 "connectapitoken"="97fe6ab5b1a640909551e36a071ce9ed"
 "Content-Type"="application/json"
} 

Invoke-RestMethod -Uri "http://MyServer/WSVistaWebClient/RESTService.svc/member/search" -Method 'Post' -Body $body -Headers $header | ConvertTo-HTML

然后您可以在请求的末尾附加一个|ConvertTo-超文本标记语言以获得更好的易读性

卞俊哲
2023-03-14

使用调用RestMethod来使用RESTAPI。将JSON保存为字符串并将其用作正文,例如:

$JSON = @'
{"@type":"login",
 "username":"xxx@gmail.com",
 "password":"yyy"
}
'@

$response = Invoke-RestMethod -Uri "http://somesite.com/oneendpoint" -Method Post -Body $JSON -ContentType "application/json"

如果您使用Powershell 3,我知道调用RestMethod存在一些问题,但您应该能够使用调用WebRequest作为替代:

$response = Invoke-WebRequest -Uri "http://somesite.com/oneendpoint" -Method Post -Body $JSON -ContentType "application/json"

如果您不想每次都编写自己的JSON,可以使用哈希表并使用PowerShell在发布之前将其转换为JSON。前任。

$JSON = @{
    "@type" = "login"
    "username" = "xxx@gmail.com"
    "password" = "yyy"
} | ConvertTo-Json
柴彬
2023-03-14

您应该能够执行以下操作:

$params = @{"@type"="login";
 "username"="xxx@gmail.com";
 "password"="yyy";
}

Invoke-WebRequest -Uri http://foobar.com/endpoint -Method POST -Body $params

这将发送邮件作为正文。然而,如果您想将其作为Json发布,您可能需要显式发布。要将其发布为JSON,可以指定ContentType,并使用

Invoke-WebRequest -Uri http://foobar.com/endpoint -Method POST -Body ($params|ConvertTo-Json) -ContentType "application/json"

额外:还可以使用Invoke-RestMethod处理JSON和RESTAPI(这将为反序列化节省一些额外的行)

 类似资料:
  • 注意:问题无效,问题是由放置错误的

  • 问题内容: 我正在建立正则表达式以检查单词是否以或或开头,我的代码如下, 它打印。我还检查了Regex之后的 stackoverflow,以测试字符串是否以http://或https://开头 正则表达式似乎是正确的,但为什么不匹配?我甚至尝试和 问题答案: 您需要在此处进行 完整的输入 匹配。 编辑 :(基于@davidchambers的评论)

  • 在使用带有xpath的正则表达式时,我对jayway jsonpath有意见。以下是我的json: 下面是我的表达式:resources[?(/_test1.CREDITPRINTFILE/.test(@.name))] 我得到以下错误: 我也尝试在在线评估工具中使用同样的表达:https://jsonpath.herokuapp.com/ Jayway-给出了相同的错误-预期路径节点Gatlin

  • 问题内容: 我需要一个不以点开头或不以开头的正则表达式。 此正则表达式有效,但在第一个条件下失败;它不以点开头: 例如:应为有效字符串,但失败。 问题答案: 从上一个问题开始,您应该可以使用: 但是,如果您希望能够匹配1个字符串,则需要否定先行: 而且,如果您也想匹配空字符串,只需使用代替即可。

  • 我在记事本中加载了一个非常大的源代码文件,我试图使用它的regex搜索功能来查找所有使用属性的地方。 我需要找到设置属性<code>DESCR</code>的所有位置。我尝试只搜索没有正则表达式,但有太多的结果需要我筛选。我知道我正在寻找的代码要么以或

  • 我试图通过Rest assured 3.1.0库请求正文字符串调用post请求,该字符串是一个xml,在内部被修剪,因此导致请求调用失败。XML有3996个字符。