2016-06-11 26 views
12

Khi gửi yêu cầu GET đến máy chủ, trong đó sử dụng chứng chỉ tự ký:Làm thế nào để phân tích cú pháp JSON từ Invoke-WebRequest trong PowerShell?

add-type @" 
    using System.Net; 
    using System.Security.Cryptography.X509Certificates; 
    public class TrustAllCertsPolicy : ICertificatePolicy { 
     public bool CheckValidationResult(
      ServicePoint srvPoint, X509Certificate certificate, 
      WebRequest request, int certificateProblem) { 
      return true; 
     } 
    } 
"@ 
[System.Net.ServicePointManager]::CertificatePolicy = New-Object TrustAllCertsPolicy 
$RESPONSE=Invoke-WebRequest -Uri https://yadayada:8080/bla -Method GET 
echo $RESPONSE 

tôi nhận được sau phản ứng:

StatusCode  : 200 
StatusDescription : OK 
Content   : {123, 10, 108, 111...} 
RawContent  : HTTP/1.1 200 OK 
        Content-Length: 21 
        Date: Sat, 11 Jun 2016 10:11:03 GMT 

        { 
         flag:false 
        } 
Headers   : {[Content-Length, 21], [Date, Sat, 11 Jun 2016 10:11:03 GMT]} 
RawContentLength : 21 

Content chứa một số con số có dây, vì vậy tôi đã đi sau RawContent , làm cách nào để phân tích cú pháp JSON bên trong, bỏ qua các tiêu đề? hoặc có cách nào để có được Nội dung từ những con số đó không?

+2

Đừng yiou cần JSON ở tất cả hoặc chỉ các giá trị? Bạn có thể thay thế 'Invoke-WebRequest' bằng' Invoke-RestMethod' để tự động chuyển đổi đáp ứng json thành 'psobject' để bạn có thể sử dụng' $ response = Intoke-RestMethod -Uri "https: // yadayada: 8080/bla"; $ response.flag' –

+1

Cảm ơn Frode F., điều này giải quyết câu đố của tôi. Đối với tôi, các giá trị JSON đủ tốt, nếu bạn sẽ đăng lại câu trả lời này, tôi sẽ chấp nhận nó – user52028778

Trả lời

21

Bạn có thể thay thế Invoke-WebRequest với Invoke-RestMethod mà tự động chuyển đổi phản ứng json để một psobject vì vậy bạn có thể sử dụng:

$response = Invoke-RestMethod -Uri "https://yadayada:8080/bla" 
$response.flag 
Các vấn đề liên quan