我正在尝试通过那里的 API 从 Mixpanel 请求数据。
我可以运行他们的基本示例脚本的修改版本并接收数据。
# sends the JQL code in `query.js` to the api
# to a project with sample data for this tutorial
curl https://mixpanel.com/api/2.0/jql \
-u API_SECRET:PASSWORD \
--data-urlencode script@query.js
query.js
上面是查询负载,其中包含一个运行在 Mixpanel 服务器上的 JS 函数。请求返回 JSON 数据。
我无法将其翻译为 Invoke-WebRequest。下面是我的尝试。
$urlEncodedString = gc query.js | Out-String | % {[System.Web.HttpUtility]::UrlEncode($_)}
$user = 'SECRET';
$pass = 'PASSWORD';
$pair = "$($user):$($pass)";
$encodedCreds = [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes($pair));
$basicAuthValue = "Basic $encodedCreds";
$Headers = @{ Authorization = $basicAuthValue };
Invoke-WebRequest -Uri ("https://mixpanel.com/api/2.0/jql") -Headers $Headers -Method Post -Body "Script@$urlEncodedString
从服务器返回 400。如果我使用详细,则有效负载大小显示为 -1 字节。
身份验证是正确的,但我确定我没有正确放置“script@$urlEncodedString”。
我已经尝试根据这个答案将正文构建为字典,但也没有成功。我在详细模式下收到相同的错误和消息。
如何将 --data-urlencode 部分转换为 Invoke-WebRequest?