🐥
WindowsでcurlなしでHTTPリクエストを送信するバッチを作る
概要
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()
Discussion