Powershell WebRequest GET成功,但删除失败(带有404)

时间:2019-04-09 13:25:47

标签: rest powershell httpwebrequest

在这个问题上非常困惑。这是我目前正在处理的。

我有一个API端点,看起来像这个/subscriptions/:id。此端点既充当GET又充当DELETE端点。当我运行GET时,它会像往常一样返回对象,但是将操作更改为DELETE会使我返回404,以获取与GET中返回的资源完全相同的资源,我不知道为什么。

这是我的Powershell代码。

[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12

$user         = '*********'
$pass         = ConvertTo-SecureString '*********' -AsPlainText -Force
$cred         = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $user, $pass
$base         = "https://*********.hosted.xmatters.com/api/xm/1"


$del_path = "$base/subscriptions/********uuid***********"
$path     = "$base/subscriptions"
$payload  = @{
    id    = '********uuid***********'
    description = '**** NEW DESCRIPTION ****'
}

$params = $payload | ConvertTo-Json

// **** SUCCESS
$thing = Invoke-WebRequest -Credential $cred -Uri $del_path -Method GET

// **** FAILS
$thing = Invoke-WebRequest -Credential $cred -Uri $del_path -Method DELETE

// **** FAILS
$thing = Invoke-WebRequest -Credential $cred -Uri $path -Method POST -Body $params -ContentType 'application/json'

因此,如前所述,我很肯定该API中存在该资源。我可以在运行GET时得到它,但是POST(更新)和DELETE都抛出404错误。这是我得到的错误。

Invoke-WebRequest : The remote server returned an error: (404) Not Found.
At \\mmfile\ct32373$\Appsense\Desktop\Line of Business Revisions.ps1:24 char:10
+ $thing = Invoke-WebRequest -Credential $cred -Uri $del_path -Method D ...
+          ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (System.Net.HttpWebRequest:HttpWebReque 
   st) [Invoke-WebRequest], WebException
    + FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Comman 
   ds.InvokeWebRequestCommand

奇怪的是,我能够使用POSTMAN成功运行DELETE请求,但是由于我需要处理的数据量很大,所以这不是一个好选择

0 个答案:

没有答案