Anda dapat mengetahuinya dengan mendekompilasi Microsoft.PowerShell.Commands.Utility
rakitan.
Pada dasarnya, Invoke-WebRequest
tidak berurusan dengan parsing data sebanyak itu. Dengan -UseBasicParsing
, ia melakukan beberapa parsing HTML berbasis Regex. Tanpa sakelar ini, ia akan menggunakan Internet Explorer COM API untuk mengurai dokumen.
Itu dia. Itu akan selalu berusaha untuk mem-parsing HTML.
Invoke-RestMethod
di sisi lain memiliki kode untuk mendukung konten JSON dan XML. Ini akan berusaha mendeteksi decoder yang sesuai. Itu tidak mendukung HTML (kecuali untuk HTML yang sesuai dengan XML, tentu saja).
Keduanya memiliki logika inti yang sama untuk membuat permintaan HTTP yang sebenarnya. Hanya dalam proses hasil mereka berbeda.
Melihat adalah percaya!
PS C:\Users\fuzzy> (Invoke-RestMethod https://httpbin.org/headers).headers
Connection Host User-Agent
---------- ---- ----------
close httpbin.org Mozilla/5.0 (Windows NT; Windows NT 10.0; de-DE) WindowsPowerShell/5.1.15063.483
PS C:\Users\fuzzy> Invoke-WebRequest -UseBasicParsing https://httpbin.org/headers
StatusCode : 200
StatusDescription : OK
Content : {
"headers": {
"Connection": "close",
"Host": "httpbin.org",
"User-Agent": "Mozilla/5.0 (Windows NT; Windows NT 10.0; de-DE)
WindowsPowerShell/5.1.15063.483"
}
}
RawContent : HTTP/1.1 200 OK
Connection: keep-alive
Access-Control-Allow-Origin: *
Access-Control-Allow-Credentials: true
X-Processed-Time: 0.00075101852417
Content-Length: 180
Content-Type: application/json...
Forms :
Headers : {[Connection, keep-alive], [Access-Control-Allow-Origin, *], [Access-Control-Allow-Credentials,
true], [X-Processed-Time, 0.00075101852417]...}
Images : {}
InputFields : {}
Links : {}
ParsedHtml :
RawContentLength : 180