2011-10-10 30 views
14

Estoy buscando hacer solicitudes http a páginas web con powershell, ¿es posible y, en caso afirmativo, cómo puedo lograrlo?solicitudes http con powershell

¿Puedo hacer solicitudes a páginas https? Puedo hacer solicitudes http con un archivo bat pero no con https, esperaba poder https solicitudes de página con powershell.

+0

¿Está solicitando el contenido de los sitios con certificados firmados por autoridades de certificación conocidos? Los navegadores y la mayoría de las pilas HTTP se resisten a recuperar contenido de los sitios HTTPS con certificados incorrectos, caducados o autofirmados (de prueba). Por lo general, puede establecer una política para ignorar el problema del certificado o importar el certificado en cuestión. – NerdDad

Respuesta

12

Puede utilizar las clases habituales WebRequest y HttpWebRequest proporcionadas por .NET framework.

$request = [System.Net.WebRequest]::Create('http://example.com') 
# do something with $request 

No es diferente de usar las mismas clases y las API de C#, excepto por las diferencias sintácticas a PowerShell.

PowerShell v3 también trae Invoke-WebRequest y algunos otros.

+0

¿Y es posible hacer una solicitud a páginas https con las de arriba? – amateur

+1

sí, vea http://stackoverflow.com/questions/560804/how-do-i-use-webrequest-to-access-an-ssl-encrypted-site-using-https –

+0

Por si acaso alguien necesita enviar un Solicitud POST, ya que era lo siguiente que necesitaba: $ request = [System.Net.WebRequest] :: Create ('mypageurl'); $ request.Method = "POST"; $ solicitud.ContentType = "application/x-www-form-urlencoded"; $ bytes = [System.Text.Encoding] :: ASCII.GetBytes ("name = john & number = 5"); $ request.ContentLength = $ bytes.Length; $ requestStream = $ request.GetRequestStream(); $ requestStream.Write ($ bytes, 0, $ bytes.Length); $ requestStream.Close(); $ request.GetResponse(); –

12

Prueba esto:

(New-Object System.Net.WebClient).DownloadString("http://stackoverflow.com") 

WebClient.DownloadString Method (String)

o en PowerShell 3.0,

(Invoke-WebRequest http://stackoverflow.com).content 

Invoke-WebRequest

+0

Corto y dulce, y funciona con una cadena de consulta añadida a la dirección también. –

2

Si todo lo demás falla, utilice Curl de http://curl.haxx.se. Puede configurar todo, incluso el manejo de certificados, POST, etc. No es sutil, pero funciona y maneja todos los casos más extraños; p.ej. puede configurar el indicador --insecure para ignorar los problemas del nombre del certificado, la caducidad o el estado de la prueba.

1

Puede crear solicitudes HTTP, HTTPS, FTP y FILE utilizando el cmdlet Invoke-WebRequest. Esto es bastante fácil y ofrece muchas opciones para jugar. Ejemplo: Para hacer peticiones simples HTTP/HTTPS a google.com

Invoke-WebRequest -Uri "http://google.com" 

Más referencias se puede encontrar MSDN

Cuestiones relacionadas