Saltar al contenido

¿Cuál es la diferencia entre Invoke-WebRequest e Invoke-RestMethod?

Solución:

Puede averiguarlo descompilando el Microsoft.PowerShell.Commands.Utility montaje.

Básicamente, Invoke-WebRequest no se ocupa mucho de analizar los datos. Con -UseBasicParsing, realiza un análisis de HTML basado en Regex. Sin este conmutador, utilizará la API COM de Internet Explorer para analizar el documento.

Eso es todo. Siempre intentará analizar HTML.

Invoke-RestMethod por otro lado, tiene código para soportar contenido JSON y XML. Intentará detectar un decodificador apropiado. Lo hace no admite HTML (excepto HTML compatible con XML, por supuesto).

Ambos comparten la misma lógica central para realizar la solicitud HTTP real. Solo difieren en el procesamiento de resultados.

¡Ver es creer!

PS C:Usersfuzzy> (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:Usersfuzzy> 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

systemcenterautomation.com hizo una publicación de blog sobre esto. La conclusión:

Invoke-RestMethod es mucho mejor para tratar con resultados XML y JSON, mientras que Invoke-WebRequest es mejor para lidiar con resultados HTML directos

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *