我正在尝试将curl命令转换为powershell调用-RestMethod
来自MobileIron的命令(以防有人搜索该主题)
curl --user <username>:<password> --header 'Content-Type: application/json' --request PUT 'https://
<mobileiron_core>/api/v2/devices/wakeup?adminDeviceSpaceId=1' --data '{"deviceUuids": ["af0cea8bf56c-
49f5-b615-76cc34936b2f"], "note": "something"}'
好的,我的代码(基于https://gist.github.com/rayterrill/e83a1bd877547eccfd59b656e7f91b48#file-mobileiron-addremovelabels-ps1)
$url = $mi_server + "/api/v2/devices/wakeup?adminDeviceSpaceId=1"
$contentType = "application/json"
$headers = @{
Authorization=("Basic {0}" -f $regase64AuthInfo)
}
$data = @{
note = "test";
deviceUuids = $guid
};
$json = $data | ConvertTo-Json;
Invoke-RestMethod -Method PUT -Uri $url -ContentType $contentType -Headers $headers -Body $data;
但是我得到了400个错误-所以,据我所知-数据有问题,但是什么?
2条答案
按热度按时间8ulbf1ek1#
MobileIron 400是一个一般性的错误:400错误请求,意味着请求无效。
随附的错误消息(跟在错误代码后面)说明了原因。
您可以张贴错误消息的其余部分吗?
不能将
--data
或-Body
与PUT
请求一起使用。必须为数据生成查询字符串。
查询字符串必须为url编码。
因为是HTTPS传输,所以可能需要-k(--unsecure)
PUT请求可以工作,我相信MobileIron更喜欢GET,两者之间没有真实的的区别。我测试了两者。
我尝试过(我用PHP进行了测试)
PUT请求
请求标头
POST DATA与查询字符串相同
我检查了有无POST数据,没有变化。
我还发送了没有查询字符串的POST数据,如果没有发送数据,它就是。
URL和查询
URL被更改为我的服务器到一个应用程序,返回请求头,和参数。
它在服务器上返回以下内容:
请求标头:
服务器GET和服务器REQUEST值
请求查询
注意上面的JSON查询字符串被截断了。
但在争论中
我删除了内容类型:application/json,并且没有任何更改。
我将PUT更改为GET,没有更改
当我开始发送
Content=Type: application/json
时对于POST请求,没有查询字符串,POS数据仅在请求的正文中。
下面是一些MobileIron文档中的请求示例:
第一个请求是默认的GET,而不是PUT。
ht4b089n2#