2014-05-08 11 views
6

tego zawinięcia polecenie działa zgodnie z oczekiwaniami:jak odtworzyć działający CURL polecenie z Invoke-WebRequest w PowerShell

curl -H "X-Api-Key:j65k423lj4k2l3fds" -X PUT -d "alerts_enabled=true" https://some/working/file.xml 

Jak mogę odtworzyć tego natywnie w PS WTH Invoke-WebRequest. Próbowałem

Invoke-WebRequest -Headers @{"X-Api-Key" = "j65k423lj4k2l3fds"} -Method PUT -Body "alerts_enabled=true" -Uri https://some/working/file.xml 

Próbowałem zostały również dokonywania obiektów dla wszystkich params (np $ headers = @ { "X-Api-key" = "kluczowe: j65k423lj4k2l3fds"} i przechodzącej -Headers $ nagłówki) .

Dzięki

+1

że nie powinien być nagłówek '@ { "X-Api-Key"= "j65k423lj4k2l3fds"}'? –

+0

tak, to była tylko literówka, kiedy redagowałem mój aktualny klucz API. naprawiony. – user3561945

Odpowiedz

6

przygotował go do pracy natywnie przy użyciu polecenia invoke-webrequest. guru powershell tutaj w pracy pomógł mi. Przełączono na nową wersję interfejsu Relic API w wersji 2 (dostępną pod adresem https://rpm.newrelic.com/api/explore), która używa JSON zamiast xml i wprowadzono kilka poprawek sytax.

$json = @"{"alert_policy":[{"enabled":"true"}]"@ 

$headers = @{} 
$headers["X-Api-Key"] = "j65k423lj4k2l3fds" 

Invoke-WebRequest -Uri "https://some/working/file.json" -Body $json -ContentType "application/json" -Headers $headers -Method Post 
+1

mimo że powyższy kod generował 200, a niektórzy json odpowiedzi, to nie przełączał ustawienia w New Relic. Postanowiłem POSTING zamiast PUTing ... więc zwróćcie na to uwagę. – user3561945

14

spróbuj dodać parametr -ContentType np

Invoke-WebRequest -Headers @{"X-Api-Key" = "j65k423lj4k2l3fds"} -Method PUT ` 
        -Body "alerts_enabled=true" -Uri https://some/working/file.xml ` 
        -ContentType application/x-www-form-urlencoded 

To prowadzi do wniosku, że wygląda następująco (z Skrzypek):

PUT http://some/working/file.xml HTTP/1.1 
X-Api-Key: j65k423lj4k2l3fds 
User-Agent: Mozilla/5.0 (Windows NT; Windows NT 6.2; en-US) WindowsPowerShell/5.0.9701.0 
Content-Type: application/x-www-form-urlencoded 
Host: some 
Content-Length: 19 
Expect: 100-continue 

alerts_enabled=true 

do testowania, zmieniłem adres URL z https na http. Jeśli to nie zadziała, pobierz Fiddlera i sprawdź żądanie RAW, gdy używasz curl, aby zobaczyć, co jest inne.

Powiązane problemy