Rest 使用cURL使用Powershell 2.0发布请求 脚本

Rest 使用cURL使用Powershell 2.0发布请求 脚本,rest,powershell,curl,Rest,Powershell,Curl,除其他外,Powershell 2.0没有有用的cmdlet Invoke rest方法 我无法升级到版本3,我发现的大多数示例都使用版本3 我发现,对于我的简单场景来说,这似乎太复杂了 我需要编写一个Powershell脚本,以Json格式发布数据,例如 {"Id":5,"Email":"test@com","DataFields":null,"Status":0} 我试过的 我能得到数据。这是我尝试过的脚本之一 curl -v --user username:password https:

除其他外,Powershell 2.0没有有用的cmdlet Invoke rest方法

我无法升级到版本3,我发现的大多数示例都使用版本3

我发现,对于我的简单场景来说,这似乎太复杂了

我需要编写一个Powershell脚本,以Json格式发布数据,例如

{"Id":5,"Email":"test@com","DataFields":null,"Status":0}
我试过的 我能得到数据。这是我尝试过的脚本之一

curl -v --user username:password https://api.dotmailer.com/v2/account-info
但是,当我尝试发布时,我不知道将消息主体放在脚本中的什么位置。到目前为止,我得到的是:

curl-v-X POST-H“接受:应用程序/json”-H“内容类型:应用程序/json”-u用户名:密码-d'{“Id”:5,“电子邮件”:test@com,“OptInType”:0,“EmailType”:0,“数据字段”:null,“状态”:0}”https://api.dotmailer.com/v2/contacts

返回以下错误:

{“message”:“无法基于内容类型\“application/json\”分析请求正文错误\“body \\u not \\u MATCH \\u content \\u type”}*

问题: 有人能建议如何使用cURL从Powershell发布Json数据吗

任何关于我为什么会出现我在“我尝试了什么”一节中提到的错误的提示都将不胜感激

谢谢。

从curl's,您似乎需要使用
-d
开关:

curl -v --user username:password -H "Content-Type: application/json" -d '{"Id":5,"Email":"test@com","DataFields":null,"Status":0}' https://api.dotmailer.com/v2/contacts

请注意,问题是关于
curl.exe
外部程序
,而不是关于PowerShell的
Invoke-WebRequest
cmdlet(不幸的是,在更高版本的PowerShell中,该cmdlet别名为
curl
,除非明确指定了
.exe
扩展名,否则会优先调用外部程序(
curl.exe…

不幸的是,出乎意料的是,您必须将
\
-转义作为参数传递给外部程序的字符串中嵌入的
实例

因此,即使:

'{"Id":5,"Email":"test@com","DataFields":null,"Status":0}'
如果有效,则不会,因为存在;相反,您必须使用:

'{\"Id\":5,\"Email\":\"test@com\",\"DataFields\":null,\"Status\":0}'

有关更多信息,请参阅。

可能是@DavidBrabant的副本。我看到了这个问题,我不认为我的问题是重复的,因为我不是在问基本身份验证。Ehmm。事实上,你是。”我需要编写一个Powershell脚本,以Json格式发布数据并使用基本身份验证“.AFAIK,要发布JSON,您只需将其转换为UTF8编码的字节,并将
application/JSON
设置为内容类型。因此,剪切并粘贴链接问题中的相关部分,其中
$post='{“Id”:5,“Email”:”test@com,“DataFields”:null,“Status”:0}'
@FrodeF。很公平,我编辑了这个问题以避免出现这种情况(我确实知道如何编写基本身份验证位)。此外,我还编辑了标题,因为它不清楚:我想使用cURL命令并在powershell中运行它们。如果有人需要回答,请参阅:谢谢,但是您提供的命令返回以下错误:
{“message”:“Content type\”application/x-www-form-urlencoded\“不受支持。请使用以下选项之一:application/json,application/xml ERROR\u CONTENT\u TYPE\u is\u not\u supported”}*
编辑答案以添加所需的标题。编辑后的答案返回我在上面“我尝试了什么”部分中提到的错误。知道原因吗?嗯,这是一个有效的json。尝试在正文周围添加方括号:
-d'[{“Id”:5,”电子邮件“:”test@com“,”数据字段“:null,“状态“:0}]”
或在值
-d'{“Id”:“5”,“Email”:”周围加上双引号”test@com“,”数据字段“:”null“,”状态“:”0“}”
或两者都有。完成了,但没有乐趣。