PowerShell 技能连载 - 在 Web Request 中使用会话变量
有些时候,Web Request 在浏览器中可以正常工作,但是在 PowerShell 中却不能。例如,当您在浏览器中导航到 http://www.geocode.xyz/Bahnhofstrasse,Hannover?json=1,可以获得 JSON 格式的坐标地址。
而当在 PowerShell 中做同样操作时,会得到奇怪的异常:
1 | $url = 'http://www.geocode.xyz/Bahnhofstrasse,Hannover?json=1' |
结果如下:
1 | Invoke-RestMethod : { "success": false, "error": { "code": "006", "message": "Request Throttled." } } |
这里的秘密是需要先获取会话状态,会话状态包括 cookie 和其它细节,然后再根据会话状态重新提交 Web Service 请求。以下是它的工作方式:
1 | $url = 'http://www.geocode.xyz' |
现在结果看起来正确了:
1 | standard : @{stnumber=1; addresst=Bahnhofstrasse; postal=30159; region=DE; prov=DE; city=Hannover; |
PowerShell 技能连载 - 在 Web Request 中使用会话变量
http://blog.vichamp.com/2019/06/20/using-session-variables-in-web-requests/