Це можна дізнатися, розклавши Microsoft.PowerShell.Commands.Utility
збірку.
В основному, Invoke-WebRequest
не так сильно розбирає дані. З -UseBasicParsing
, це робить деякий розбір HTML на основі Regex. Без цього перемикача він використовуватиме COM Internet API COM для аналізу документа.
Це воно. Він завжди намагатиметься розібрати HTML.
Invoke-RestMethod
з іншого боку, є код для підтримки вмісту JSON та XML. Він спробує виявити відповідний декодер. Він не підтримує HTML (за винятком, звісно, сумісного з XML HTML).
Обидва мають однакову логіку ядра, щоб зробити фактичний запит HTTP. Тільки в обробці результатів вони відрізняються.
Бачити - вірити!
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