Я провел кучу поисков, но ничто не помогло мне решить эту проблему.Любая помощь приветствуется.
Я пытаюсь преобразовать команду curl
в Invoke-WebRequest
, но по какой-то причине я не получаю ответ.Я попытался:
$headers = @{
outh_a = "WEBREQ";
oauth_key = "key";
etc...
}
Invoke-WebRequest -Uri $url -Method POST -Body "{}" -Headers $headers -Verbose
Команда curl
выглядит следующим образом:
.\curl.exe -x POST -d "{}" -H "oauth_a: WEBREQ" -H "oauth_key:key" -H "Content-Type: application/json" -H "oauth_sm:HMAC-SHA2" -H "oauth_t:timestamp"-H "oauth_s:key+signature=" "https://example.com/services/api/request?t=data&a=data2&n=404&i=0"
Команда работает отлично и возвращает данные.Я использую PowerShell, так как мы хотим проанализировать полученные данные.Любая помощь будет принята с благодарностью.
Команда curl
не будет выполнена, если я отправлю ее без -d "{}"
, поэтому эта часть является обязательной.Я предполагаю, что сервер ожидает получения определенного количества данных.
Я не уверен, что происходит, чтобы предотвратить ответ.Я пробовал curl
с той же машины, на которой я выполняю сценарий PowerShell, и он работает.Я даже использовал SoapUI для того же вызова, и он тоже работает там.
Редактировать :
[System.Net.ServicePointManager]::CertificatePolicy = New-Object TrustAllCertsPolicy
[System.Net.WebRequest]::DefaultWebProxy.Credentials =
[System.Net.CredentialCache]::DefaultCredentials
[Net.ServicePointManager]::SecurityProtocol =
[Net.SecurityProtocolType]::Ssl3, [Net.SecurityProtocolType]::Tls,
[Net.SecurityProtocolType]::Tls11, [Net.SecurityProtocolType]::Tls12
$Domain = "https://example.com/services/api/request?t=oauth_auth_token&a=appid&n=404&i=0"
# OAUTH Authorization Request Header
$Header = @{
o_nonce = 'TEST'
o_con_key = 'key'
o_sig_meth = 'type'
o_timestamp = 'timestamp'
o_sig = 'signature'
o_ver = '1.0'
o_realm = 'http://example.com/services'
}
$Body = @{}
$API_Response = Invoke-RestMethod -Method POST -Headers $Header -Uri $Domain -Body $Body -Verbose -TimeoutSec 20