LoginSignup
1
1

WindowsでcurlなしでHTTPリクエストを送信するバッチを作る

Posted at

概要

curlが使えないバージョンのWindowsでバッチファイルをクリックしたときにHTTPリクエストを投げたい!

結論

HTTPリクエストを投げるのはPowerShellで頑張って、それをバッチファイルから起動する。

GET

Request.ps1
$Url = "https://jsonplaceholder.typicode.com/posts/1"

# リクエストの作成
$WebRequest = [System.Net.WebRequest]::Create($Url)
$WebRequest.Method = "GET"

# レスポンスの取得
$Response = $WebRequest.GetResponse()
$ResponseStream = $Response.GetResponseStream()
$ReadStream = New-Object System.IO.StreamReader $ResponseStream
$Data = $ReadStream.ReadToEnd()

# 結果の表示
echo $Data

# ストリームとレスポンスをクローズ
$ReadStream.Close()
$Response.Close()
Start.bat
@echo off
cd /D %~dp0
powershell -NoProfile -ExecutionPolicy Unrestricted .\Request.ps1
echo Complete!
pause

POST

Request.ps1
$Url = "https://jsonplaceholder.typicode.com/posts"

# ボディ
$RequestBody = @{
    title = 'foo'
    body = 'bar'
    userId = 1
} | ConvertTo-Json

# リクエストの作成
$WebRequest = [System.Net.WebRequest]::Create($Url)
$WebRequest.Method = "POST"
$WebRequest.ContentType = "application/json"

# レスポンスの取得
$Response = $WebRequest.GetResponse()
$ResponseStream = $Response.GetResponseStream()
$ReadStream = New-Object System.IO.StreamReader $ResponseStream
$Data = $ReadStream.ReadToEnd()

# 結果の表示
echo $Data

# ストリームとレスポンスをクローズ
$ReadStream.Close()
$Response.Close()

参考

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1