powershell发送http请求

## 先设置: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 ''
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值