簡體   English   中英

我正在嘗試使用invoke-restmethod / invoke-webrequest在powershell中執行REST API,但在傳遞Json輸入時失敗

[英]I am trying to execute REST API within powershell using invoke-restmethod/invoke-webrequest but failed when I pass Json inputs

我正在嘗試使用invoke-restmethod / invoke-webrequest在powershell中執行REST API,但是在傳遞Json輸入時失敗。 它與CURL命令一起使用。

curl -v-用戶admin:密碼-H接受:application / json -H內容類型:application / json -d“ @C:\\ data \\ test.json” -X POST http://10.11.60.88:8081 / artifactory / api / distribute

Test.json的內容如下

{

"targetRepo" : "ECSDigital_Bintray", 
"packagesRepoPaths" : ["SNOW/org/apache/maven/maven-artifact/3.3.9/maven-artifact-3.3.9.jar"] 

}

我在powershell下面寫東西,這給了我一系列錯誤。

$ user =“管理員”

$ pass =“密碼”

$ secpasswd = ConvertTo-SecureString $ user -AsPlainText -Force $ cred =新對象System.Management.Automation.PSCredential($ pass,$ secpasswd)

$ postParams = @ {targetRepo ='SNOW'; packagesRepoPaths ='[“ org / apache / maven / maven-artifact / 3.3.9 / maven-artifact-3.3.9.jar”]'}

Invoke-WebRequest -Uri“ http://10.11.60.88:8081/artifactory/api/distribute ” -Credential $ cred -Method Post -ContentType“ application / json” -Body $ postParams

錯誤:Invoke-WebRequest:遠程服務器返回錯誤:(400)錯誤的請求。

我嘗試了json輸入的一些組合,但沒有成功。 有什么幫助嗎?

我已解決此問題,以下方法解決了我的問題,需要添加其他“”

$params = @{

uri = $ARTIFACTORY_PROTOCOL+"://"+$ARTIFACTORY_IP+":"+$ARTIFACTORY_PORT+"/artifactory/api/distribute";

Method = 'POST';

Headers = @{Authorization = 'Basic ' + [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes("$($ARTIFACTORY_USERNAME):$($ARTIFACTORY_PASSWORD)"));"Accept" = 'application/json';"Content-Type" = 'application/json'}

#body = @{""targetRepo"" : ""$DISTRIBUTION_REPOSITORY"", ""packagesRepoPaths"" : ""$ARTIFACTORY_PATH""} 

}

$json = "{
           ""targetRepo"":""$DISTRIBUTION_REPOSITORY"",
           ""packagesRepoPaths"":[""$ARTIFACTORY_PATH""]
         }"

$var = invoke-restmethod @params -Body $json
echo $var

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM