我试图创建一个Powershell脚本来访问DYN的API,并对我使用/测试的DNS区域执行检查/更新。
我正在关注他们的API详细信息,这是第一个链接,https://help.dyn.com/session-log-in/
这是我放在一起的REST脚本的开始:
$url = "https://api2.dynect.net/REST/Session/"
$body = @{customer_name='mahcompany';user_name='mahname';password='mahpass'}
Invoke-RestMethod -Method Post -Uri $url -Body $body
这将产生以下结果:
Invoke-RestMethod:远程服务器返回错误:(406)不可接受。在第12行:char:9 + $ test = Invoke-RestMethod -Method Post -Uri $ url -Body $ body + ~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + CategoryInfo:InvalidOperation:(System.Net.HttpWebRequest:HttpWebRequest)[Invoke-> RestMethod], WebException + FullyQualifiedErrorId:WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeRestMethodCommand
这应该是根据DYN信息进行的JSON查询,因此我尝试了使用CURL作为基础的DYN的其他示例:
$json = @"{"customer_name":"yourcustomer","user_name":"youruser","password":"yourpass"}'
但是,这也不起作用。
有人可以在这里指出正确的方向吗?这可不是那么疯狂,我只是想将参数传递给其他方法查询字符串。在此刻,任何帮助将不胜感激。
-西恩
Invoke-RestMethod -Method Post -Uri $url -Body $body -ContentType 'application/json'
如果dyn.com期望使用适当的内容类型,则可能是问题。
根据有关的文档Invoke-RestMethod
:
如果省略此参数,并且请求方法为POST,则Invoke-RestMethod会将内容类型设置为“ application / x-www-form-urlencoded”。否则,在呼叫中未指定内容类型。
ConvertTo-JSON
您不必手动创建JSON字符串。您可以创建一个哈希表,然后将其转换:
$data = @{
customer = 'something'
name = 'whatever'
}
$data | ConvertTo-JSON
我并不是说您肯定在制作格式错误的JSON,但这可以帮助防止这种情况。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句