首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将多个头和json输入curl命令转换为powershell

将多个头和json输入curl命令转换为powershell
EN

Stack Overflow用户
提问于 2022-05-31 01:07:41
回答 1查看 203关注 0票数 0

我有下面的curl命令,我试图将它转换为powershell,但是我不确定如何处理多头输入和JSON输入。

任何帮助都是非常感谢的。

代码语言:javascript
运行
复制
         curl --location --request POST 'https://anypoint.studio.com/cloudhub/api/v2/applications' \
     --header 'X-ANYPNT-ENV-ID:  4a96abfd4f5237cf1b64' \
     --header 'X-ANYPNT-ORG-ID: bc0d-3b9fd79234ad' \
     --header 'Authorization: Bearer 3esede-a44b-29ab8841b508' \
     --form 'file=@"/C:/Users/pgi/Downloads/eafdc-flow-proxy-v1.2.jar"' \
     --form 'appInfoJson="{
\"domain\": \"testproxy-test\",
\"Version\": {
    \"version\": \"4.4.0\"
},
      \"properties\": {
    \"platform.client_id\": \"8f95qw3sa4b679aaa699cf0f5c6b6\",
    \"secure.key\": \"sYf%NJ7F^y&3lNRH*D$@\",
    \"env\": \"dev\",
    \"platform.client_secret\": \"acF0JHFUEFH8829a481D9c37EF364be7a\"
},
      \"propertiesOptions\": {
    \"secure.key\": {
        \"secure\": true
    },
    \"anypoint.platform.client_secret\": {
        \"secure\": true
    }
},
\"region\": \"us-west-1\",
\"monitoringEnabled\": true,
\"monitoringAutoRestart\": true,
\"workers\": {
    \"amount\": 1,
    \"type\": {
        \"name\": \"Micro\",
        \"weight\": 0.1,
        \"cpu\": \"0.1 vCores\",
        \"memory\": \"500 MB memory\"
    }
},
\"loggingNgEnabled\": true,
\"persistentQueues\": true
  }"' \
 --form 'autoStart="true"'
EN

回答 1

Stack Overflow用户

发布于 2022-05-31 01:17:45

您可以用curl替换Invoke-WebRequest,用ConvertFrom-Json解析JSON。

代码语言:javascript
运行
复制
$r = Invoke-WebRequest -Uri $uri -Method Post -Body $body
$j = ConvertFrom-Json $r.Content

我没有设置$uri$body的值。我希望这对你来说已经足够了。

更新

第一次答复写得太快了。你可能需要传递头部和身体。

与curl一样,调用-Webrequest功能强大且复杂。您可以在这里找到在线文档:

https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.utility/invoke-webrequest?view=powershell-7.2&WT.mc_id=ps-gethelp

您需要使用标头和正文参数:

-Headers

指定web请求的标题。输入哈希表或字典。

若要设置UserAgent头,请使用UserAgent参数。不能使用此参数指定用户代理或cookie标头。

当为主体提供Content-Type对象时,将重写与内容相关的标头(如MultipartFormDataContent )。-Body

指定请求的主体。主体是标题后面的请求的内容。您还可以将正文值输送到Invoke-WebRequest

Body参数可用于指定查询参数列表或指定响应的内容。

当输入是GET请求而主体是IDictionary (通常是哈希表)时,主体作为查询参数添加到URI中。对于其他请求类型(如POST),主体以标准name=value格式设置为请求体的值。

Body参数还可以接受System.Net.Http.MultipartFormDataContent对象。这有助于multipart/form-data请求。当为主体提供MultipartFormDataContent对象时,提供给ContentType、headers或WebSession参数的任何与内容相关的标头都会被MultipartFormDataContent对象的内容标头覆盖。这个特性是在PowerShell 6.0.0中添加的。

看起来您必须创建一个MultipartFormDataContent对象。注意,这是在Windows 6中添加的,所以您不能使用PowerShell内置的默认版本5。如果您还没有安装版本7,您可能需要安装最新版本的版本7(我使用版本7,它很棒)。

因此,对于标题,您可以创建如下所示:

代码语言:javascript
运行
复制
$headers = [ordered]@{
    'X-ANYPNT-ENV-ID' = '4a96abfd4f5237cf1b64'
    'X-ANYPNT-ORG-ID' = 'bc0d-3b9fd79234ad'
    'Authorization' = 'Bearer 3esede-a44b-29ab8841b508'
}

然后打个电话,比如:

代码语言:javascript
运行
复制
$r = Invoke-WebRequest -Uri $uri -Method Post `
    -Headers $headers -Body $myMultipartFormDataContent

我还没有用过MultipartFormDataContent,所以由你来决定。我希望这能为你提供一个好的起点。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72441288

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档