Invoke-Rest 메서드: 반환 코드를 가져오려면 어떻게 해야 합니까?
전화할 때 반송 코드를 어딘가에 저장할 방법이 있나요?Invoke-RestMethod
파워쉘에서?
내 코드는 다음과 같습니다.
$url = "http://www.dictionaryapi.com/api/v1/references/collegiate/xml/Adventure?key=MyKeyGoesHere"
$XMLReturned = Invoke-RestMethod -Uri $url -Method Get;
내 안에 아무데도 안 보여지지 않아요.$XMLReturned
반환 코드를 200으로 변경합니다.그 반송 코드는 어디서 찾을 수 있습니까?
몇 가지 선택 사항이 있습니다.여기 옵션 1이 있습니다.예외에서 발견된 결과에서 응답 코드를 끌어옵니다.
try {
Invoke-RestMethod ... your parameters here ...
} catch {
# Dig into the exception to get the Response details.
# Note that value__ is not a typo.
Write-Host "StatusCode:" $_.Exception.Response.StatusCode.value__
Write-Host "StatusDescription:" $_.Exception.Response.StatusDescription
}
다른 옵션은 여기에 있는 이전 호출-웹 요청 cmdlet을 사용하는 것입니다.
여기서 복사한 코드는 다음과 같습니다.
$resp = try { Invoke-WebRequest ... } catch { $_.Exception.Response }
그것은 당신이 시도할 수 있는 두 가지 방법입니다.
단답형은, 할 수 없다는 것입니다.
당신은 사용해야 합니다.Invoke-WebRequest
대신.
이 두 가지는 매우 유사하며, 주요 차이점은 다음과 같습니다.
Invoke-RestMethod
응답 본문만 반환하며, 미리 구문 분석할 수 있습니다.Invoke-WebRequest
응답 본문을 구문 분석하지 않고 응답 헤더 및 상태 코드를 포함한 전체 응답을 반환합니다.
PS> $response = Invoke-WebRequest -Uri $url -Method Get
PS> $response.StatusCode
200
PS> $response.Content
(…xml as string…)
웹 요청을 호출하면 문제가 해결됩니다.
$response = Invoke-WebRequest -Uri $url -Method Get
if ($response.StatusCode -lt 300){
Write-Host $response
}
원한다면 전화를 받아보시기 바랍니다.
try {
$response = Invoke-WebRequest -Uri $url -Method Get
if ($response.StatusCode -lt 300){
Write-Host $response
}
else {
Write-Host $response.StatusCode
Write-Host $response.StatusDescription
}
}
catch {
Write-Host $_.Exception.Response.StatusDescription
}
PowerShell 7에 도입된 매개 변수StatusCodeVariable
를 위해Invoke-RestMethod
cmdlet.달러 기호($) 없이 변수 이름 전달:
$XMLReturned = Invoke-RestMethod -Uri $url -Method Get -StatusCodeVariable 'statusCode'
# Access status code via $statusCode variable
PowerShell 7에서 사용 가능한 'StatusCodeVariable'을 사용합니다.
참조: https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.utility/invoke-restmethod?view=powershell-7.2
예:
$getTaskGroupsArgs = @{
Uri = $getTaskGroupUri
Method = 'GET'
Headers = $adoAuthHeader
UseBasicParsing = $True
StatusCodeVariable = 'statusCode'
}
$allTaskGroups = Invoke-RestMethod @getTaskGroupsArgs
$statusCode
StatusCodeVariable value는 응답 코드의 값을 유지하면서 생성될 변수의 이름입니다.
Invoke-WebRequest를 추천하는 사람들을 봤습니다.어떻게든 IE에 기반을 두고 있다는 것을 알아야 합니다.다음 오류가 발생합니다.
Internet Explorer 엔진을 사용할 수 없거나 Internet Explorer의 처음 시작 구성이 완료되지 않았기 때문에 응답 내용을 구문 분석할 수 없습니다.UseBasicParsing 매개변수를 지정하고 다시 시도합니다.
처음 IE를 열 수 있다는 것은 알고 있지만 대본을 쓰는 것은 IE와 같은 의존 관계를 피하는 것입니다.Invoke-RestMethod에는 이 문제가 없습니다.
언급URL : https://stackoverflow.com/questions/38622526/invoke-restmethod-how-do-i-get-the-return-code
'programing' 카테고리의 다른 글
여기서 .slice(0)의 의미는 무엇입니까? (0) | 2023.10.08 |
---|---|
가운데 오버사이즈 이미지(Div) (0) | 2023.10.08 |
Nodejs5와 babel에서 "예상치 못한 토큰 가져오기"? (0) | 2023.10.08 |
AngularJS에서 행을 각각 2개씩 더 반복하는 방법 (0) | 2023.10.08 |
레일 3 + angularjs + minization은 생산 시 작동하지 않습니다.알 수 없는 공급자: eProvider (0) | 2023.10.08 |