2011-10-10 4 views
14

Sto cercando di effettuare richieste http su pagine web con PowerShell, è possibile e, in tal caso, come posso ottenerlo?richieste http con PowerShell

Posso fare richieste a pagine https? Sono in grado di effettuare richieste http con un file bat ma non con https, speravo di poter httpsare le richieste di pagina con powershell.

+0

Stai chiedendo contenuti da siti con certificati firmati da autorità di certificazione ben noti? I browser e la maggior parte degli stack HTTP si bloccano nel recuperare il contenuto dai siti HTTPS con certificati (test) non corretti, scaduti o autofirmati. In genere, è possibile impostare un criterio per ignorare il problema del certificato o importare il certificato in questione. – NerdDad

risposta

12

È possibile utilizzare le solite classi WebRequest e HttpWebRequest fornite dal framework .NET.

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

Non è diverso di utilizzare le stesse classi e le API da C#, ad eccezione delle differenze sintattiche a PowerShell.

PowerShell v3 porta anche Invoke-WebRequest e pochi altri.

+0

Ed è possibile effettuare una richiesta alle pagine https con quanto sopra? – amateur

+1

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

+0

Nel caso in cui qualcuno debba inviare un messaggio Richiesta POST, poiché quella era la prossima cosa di cui avevo bisogno: $ request = [System.Net.WebRequest] :: Create ('mypageurl'); $ request.Method = "POST"; $ richiesta.ContentType = "application/x-www-form-urlencoded"; $ byte = [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

Prova questo:

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

WebClient.DownloadString Method (String)

o in PowerShell 3.0,

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

Invoke-WebRequest

+0

Breve e dolce, e funziona anche con una stringa di query aggiunta all'indirizzo. –

2

Se tutto il resto fallisce, utilizzare Curl da http://curl.haxx.se. Puoi impostare qualsiasi cosa, compresa la gestione dei certificati, i POST, ecc. Non sottile, ma funziona e gestisce tutti i casi più difficili; per esempio. è possibile impostare il flag --insecure per ignorare problemi relativi ai nomi dei certificati, scadenza o stato del test.

1

È possibile creare richieste HTTP, HTTPS, FTP e FILE utilizzando il cmdlet Invoke-WebRequest. Questo è abbastanza facile e offre molte opzioni per giocare. Esempio: Per rendere semplici richieste HTTP/HTTPS per google.com

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

più riferimenti si possono trovare MSDN