programing

Invoke-Rest 메서드: 반환 코드를 가져오려면 어떻게 해야 합니까?

muds 2023. 10. 8. 10:24
반응형

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-RestMethodcmdlet.달러 기호($) 없이 변수 이름 전달:

$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

반응형