Я пытаюсь запросить данные у Mixpanel через там API.
Mixpanel JQL Getting Started
Я могу запустить модифицированную версию своего базового примера сценария и получать данные.
# 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
вышеэто полезная нагрузка запроса, которая содержит функцию JS, которая выполняется на серверах Mixpanel.Запрос возвращает данные 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?