
如果您需要在Windows系统中通过PowerShell与Web服务交互,可以直接使用内置的Invoke-RestMethod命令发起HTTP请求。以下是实现该功能的多种方法:
一、使用Invoke-RestMethod发送GET请求
Invoke-RestMethod默认以GET方式请求URL,并自动解析JSON或XML响应为PowerShell对象,适合调用返回结构化数据的API接口。
1、以管理员身份打开PowerShell窗口。
2、输入命令:Invoke-RestMethod -Uri “https://httpbin.org/get”,按回车执行。
3、观察返回结果,其中ResponseHeaders、Args等字段将以哈希表形式显示。
二、使用Invoke-RestMethod发送POST请求并传递JSON数据
当目标API要求提交JSON格式的请求体时,需将数据序列化为JSON字符串,并设置正确的Content-Type头。
1、构造请求体:$body = @{name=”test”; age=25} | ConvertTo-Json。
2、执行请求:Invoke-RestMethod -Uri “https://httpbin.org/post” -Method POST -Body $body -ContentType “application/json”。
3、确认响应中的json字段包含原始提交的数据内容。
三、使用Invoke-WebRequest替代Invoke-RestMethod获取原始响应
Invoke-WebRequest不自动反序列化响应体,适用于需检查原始HTTP状态码、响应头或非结构化响应内容的场景。
1、运行命令:Invoke-WebRequest -Uri “https://httpbin.org/status/404” -Method GET。
2、查看输出对象的StatusCode属性,确认返回值为404。
3、通过.Content属性访问原始响应正文,例如(Invoke-WebRequest -Uri "https://httpbin.org/get").Content。
四、添加认证头调用受保护的API
对于需要Bearer Token或Basic Auth的接口,必须在请求头中显式注入Authorization字段。
1、定义头部哈希表:$headers = @{“Authorization” = “Bearer abc123xyz”}。
2、执行带认证的请求:Invoke-RestMethod -Uri “https://api.example.com/data” -Headers $headers。
3、若使用Basic认证,先生成Base64编码凭据:$auth = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(“user:pass”)),再设为"Basic $auth"。
五、处理SSL证书错误或跳过验证
在测试环境或自签名证书服务器上,PowerShell可能因证书不受信任而拒绝连接,可通过临时策略绕过验证。
1、执行脚本块禁用证书验证:[Net.ServicePointManager]::ServerCertificateValidationCallback = {$true}。
2、随后调用Invoke-RestMethod,例如:Invoke-RestMethod -Uri “https://self-signed.badssl.com/”。
3、操作完成后建议恢复默认策略:[Net.ServicePointManager]::ServerCertificateValidationCallback = $null。

评论(0)