## 先设置:set-ExecutionPolicy RemoteSigned
Function Get-StringHash([String] $String,$HashName = "MD5") {
$StringBuilder = New-Object System.Text.StringBuilder
[System.Security.Cryptography.HashAlgorithm]::Create($HashName).ComputeHash([System.Text.Encoding]::UTF8.GetBytes($String))|%{
[Void]$StringBuilder.Append($_.ToString("x2"))
}
$StringBuilder.ToString()
}
Function Get-Request-Body{
param(
[hashtable] $params,
[string] $AppSecret
)
$strparam=''
$strKeys=''
$params.GetEnumerator() | sort key | foreach {
$strKeys=$strKeys+','+$_.Key
}
$CharArray =$strKeys.Split(",")
$comma=''
foreach($item in $CharArray){
if($item -eq ""){
continue
}
$strparam=$strparam+$comma+$item+'='+$params[$item]
$comma='&'
}
#get signature start
$signatureStr=$AppSecret+'&'+$strparam+'&'+$AppSecret
$signature=Get-StringHash($signatureStr)
#get signature end
#get request body
$content=$strparam+'&signature='+ $signature
return $content
}
$target='https://xxxx.com/api/create'
$verb='POST'
write-host "Http Url: $target"
write-host "Http Verb: $verb"
$AppSecret='****'
#request param
$params=@{ appId="***"; username="**";userType=1;phone="**";companyName='*';companyUrl='*';pwd='*';rePwd="*"}
$content= Get-Request-Body -params $params -AppSecret $AppSecret
$webRequest = [System.Net.WebRequest]::Create($target)
$encodedContent = [System.Text.Encoding]::UTF8.GetBytes($content)
$webRequest.Method = $verb
write-host "UTF8 Encoded Http Content: $content"
write-host "Http Content: $content"
if($encodedContent.length -gt 0) {
$webRequest.ContentType = "application/x-www-form-urlencoded"
$webRequest.ContentLength = $encodedContent.length
$requestStream = $webRequest.GetRequestStream()
$requestStream.Write($encodedContent, 0, $encodedContent.length)
$requestStream.Close()
}
[System.Net.WebResponse] $resp = $webRequest.GetResponse();
if($resp -ne $null) {
$rs = $resp.GetResponseStream();
[System.IO.StreamReader] $sr = New-Object System.IO.StreamReader -argumentList $rs;
[string] $results = $sr.ReadToEnd();
return $results
}else{
exit ''
}
powershell发送http请求
最新推荐文章于 2024-02-26 10:05:50 发布