how to recreate a working CURL command with Invoke-WebRequest in Powershell

后端 未结 3 468
生来不讨喜
生来不讨喜 2020-12-28 20:27

This curl command works as desired:

curl -H \"X-Api-Key:j65k423lj4k2l3fds\" `
     -X PUT `
     -d \"alerts_enabled=true\" `
        https://some/working/fi         


        
相关标签:
3条回答
  • 2020-12-28 20:52

    got it to work natively using invoke-webrequest. powershell guru here at work helped me out. Switched to the New Relic API version 2 (available at https://rpm.newrelic.com/api/explore), which uses JSON instead of xml, and made some sytax tweaks.

    $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
    
    0 讨论(0)
  • 2020-12-28 21:10

    Try adding the parameter -ContentType e.g.:

    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
    

    That results in a request that looks like this (from Fiddler):

    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
    

    For testing, I changed the URL from https to http. If that doesn't work, go download Fiddler and inspect the RAW request when curl is used to see what is different.

    0 讨论(0)
  • 2020-12-28 21:14

    This works for me in Powershell using the curl alias to Invoke-WebRequest...

     curl -H @{"X-Api-Key" = "j65k423lj4k2l3fds"} -Method PUT 'https://some/working/file.xml'
    
    0 讨论(0)
提交回复
热议问题