🐥

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

2024/01/31に公開

概要

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()
GitHubで編集を提案

Discussion