我希望用powershell向网页发出http请求,这是否可能,如果是这样,我怎么能实现这个目标呢?
我可以向https网页发出请求吗?我能够使用bat文件而不是https来发出http请求,希望我能用PowerShell来https页面请求。
答案 0 :(得分:15)
您可以使用.NET框架提供的常用WebRequest
和HttpWebRequest
类。
$request = [System.Net.WebRequest]::Create('http://example.com')
# do something with $request
与使用C#中的相同类和API没有什么不同,除了与PowerShell的语法差异。
PowerShell v3还会带来Invoke-WebRequest
和其他几个。
答案 1 :(得分:15)
试试这个:
(New-Object System.Net.WebClient).DownloadString("http://stackoverflow.com")
WebClient.DownloadString Method (String)
或在PowerShell 3.0中,
(Invoke-WebRequest http://stackoverflow.com).content
答案 2 :(得分:8)
根据您的工作情况,您还可以使用System.Net.WebClient
,这是HttpWebRequest
的简化抽象
$client = new-object system.net.webclient
在此处查看差异:What difference is there between WebClient and HTTPWebRequest classes in .NET?
PS:使用Powershell v3.0,您可以使用Invoke-WebRequest
和Invoke-RestMethod
cmdlet来实现类似用途
答案 3 :(得分:2)
如果所有其他方法都失败,请使用http://curl.haxx.se中的Curl。您可以设置所有内容,包括证书处理,POST等。不是很微妙,但它可以工作并处理所有奇怪的情况;例如您可以设置--insecure标志以忽略证书名称问题,到期或测试状态。
答案 4 :(得分:2)
您可以使用Invoke-WebRequest cmdlet创建HTTP,HTTPS,FTP和FILE请求。这非常简单,并提供了许多选项。 示例:向 google.com
发出简单的http / https请求Invoke-WebRequest -Uri "http://google.com"
可以找到更多参考资料MSDN
答案 5 :(得分:0)
此代码可通过Powershell中的https使用ASCII和二进制文件:
# Add the necessary .NET assembly
Add-Type -AssemblyName System.Net.Http
# Create the HttpClient object
$client = New-Object -TypeName System.Net.Http.Httpclient
# Get the web content.
$task = $client.GetByteArrayAsync("https://stackoverflow.com/questions/7715695/http-requests-with-powershell")
# Wait for the async call to finish
$task.wait();
# Write to file
[io.file]::WriteAllBytes('test.html',$task.result)
在Powershell 5.1.17134.1,Win 10上进行了测试
答案 6 :(得分:0)
试试这个 PowerShell 模块:https://github.com/toolkitx/simple-request
由Install-Module -Name SimpleRequest
安装
然后你可以发送像
$Data = @{
"TokenUrl" = 111
"ClientSecret" = "222"
"ClientId" = "333"
"AuthResource" = "444"
"Username" = "User1"
"Password" = "Password"
"Id" = 99
"Price" = 0.99
"Value" = "Content"
}
$Sample = '
POST https://httpbin.org/post?id={{Id}}
Content-Type: application/json
Authorization: Bearer {{QIBToken}}
{
"id": {{Id}},
"value": "{{Value}}"
}'
$Response = Invoke-SimpleRequest -Syntax $Sample -Context $Data
详细介绍请参考GitHub
答案 7 :(得分:0)
此方法下载内容:
# PowerShell 2 version
$WebRequest=New-Object System.Net.WebClient
$WebRequest.UseDefaultCredentials=$true
#$WebRequest.Credentials=(Get-Credential)
$Data=$WebRequest.DownloadData("http://<url>")
[System.IO.File]::WriteAllBytes("<full path of file>",$Data)
# PowerShell 5 version
Invoke-WebRequest -Uri "http://<url>" -OutFile "<full path of file>" -UseDefaultCredentials -ContentType