【发布时间】:2020-10-14 11:26:49
【问题描述】:
问题
我很难将 curl 调用转换为 Powershell Invoke-RestMethod 调用,因为 Powershell 并没有真正提供最具信息性的错误消息(如果有的话) .
卷曲调用(Ubuntu)
token = "djsakldsakldjaslda"
host = "https://lalala.azuredatabricks.net/"
curl -X POST -H "Authorization: Bearer $(token)" $(host)/api/2.0/clusters/create -d $(cat my_file.json)
Invoke-RestMethod 调用 (Powershell)
$token= "djsakldsakldjaslda"
$host = "https://lalala.azuredatabricks.net/"
Invoke-RestMethod -Method Post -Uri $host/api/2.0/clusters/create -Headers @{"Authorization" = "Bearer " + $token} -Body $(get-content my_file.json -raw | ConvertFrom-Json)
我有各种格式的正文,但无论我发送什么,我都会返回一些用于登录页面的 HTML。在带有 Curl 的 Ubuntu 上一切正常。
注意:
问题似乎是 PowerShell 无法处理双“/”,如“https://lalala.azuredatabricks.net//api/2.0/clusters/create”。
奇怪的是 Invoke-RestMethod 到达登录页面,但从那里失败。
【问题讨论】:
-
尝试在
ConvertFrom-Json之后添加ConvertTo-Json= $(get-content my_file.json -raw | ConvertFrom-Json | ConvertTo-Json) -
大声笑,这似乎有效。 OMG,为什么我需要使用这个可怕的工具:P
-
我发现了错误,似乎与Curl不同,PowerShell方法不接受lalala.azuredatabricks.net//api/2.0/clusters/create中的“//”。奇怪的是它没有出错,但确实到达了站点...
-
查看我的答案以获得解释,您也可以尝试同时删除 ` | ConvertFrom-Json | ConvertTo-Json` 也许它会工作。检查它:)
-
@ShaykiAbramczyk 嗯?当文件已经是 JSON,并且 OP 调用
ConvertFrom-JSON,但 API 需要 JSON,则解决方案不再调用ConvertTo-JSON,解决方案是删除ConvertFrom-JSON。
标签: json powershell curl post invoke-restmethod